Изменение громкости SCNAudioPlayer в реальном времени – SwiftIOS

Программируем под IOS
Anonymous
Изменение громкости SCNAudioPlayer в реальном времени – Swift

Сообщение Anonymous »

Я пытаюсь понять, как изменить громкость SCNAudioPlayer в реальном времени.

В настоящее время у меня есть SCNAudioSource, подключенный к SCNAudioPlayer. Этот аудиоплеер затем назначается SCNNode, чтобы мой звук использовал пространственную обработку звука SceneKits.

В нынешнем виде я могу изменить громкость каждого SCNNode с использованием SCNAudioSource.volume, запускаемого логической переменной vol. Ниже приведен фрагмент моего кода:

Код: Выделить всё

(audioSource, audioCount) = soundFileSelect(audioFileIndex: 0)
audioSource?.isPositional = true
if vol {
audioSource?.volume = 1.0
}
else {
audioSource?.volume = 0.0
}
let audioPlayer = SCNAudioPlayer(source: audioSource!)
geometryNode.addAudioPlayer(audioPlayer)
let play = SCNAction.playAudio(audioSource!, waitForCompletion: true)
let loopPlay = SCNAction.repeatForever(play)
geometryNode.runAction(loopPlay)
Однако это изменяет только настройку громкости источника по умолчанию, и это происходит только при создании узла. Я пытаюсь изменить громкость в реальном времени после нажатия кнопки.

Я чувствую, что упускаю что-то простое, и поискал в Интернете документацию и примеры. но я действительно борюсь. Судя по документации API Apple, я вполне уверен, что это возможно. Насколько я могу судить, вам необходимо использовать свойство audioNode, связанное с SCNAudioPlayer, которое является частью протокола AVAudioMixing. Использование этого свойства громкости AVAudioMxing должно быть тем, что мне нужно!

Однако я, хоть убей, не могу понять, как реализовать этот процесс в коде в рамках моей текущей установки. Я могу получить доступ к mainMixer.volume/

Код: Выделить всё

outputvolume
, например:

Код: Выделить всё

audioPlayer.audioNode?.engine?.mainMixerNode.outputVolume=0
но, похоже, это не работает. Как компоненты AV и SCN связаны друг с другом?

Любая помощь или примеры того, как это реализовать, будем очень признательны!

Подробнее здесь: https://stackoverflow.com/questions/439 ... time-swift

Вернуться в «IOS»