Intereting Posts
что не так с моей петлей – петля через представления Как изображение центра на лице? NSURLSessionDataDelegate не вызван Карта мира рисования – Производительность и взаимодействие – iOS animateTransition сбрасывает начало кадра toView в (0, 0) Жест жестокости не работает над UIimageview Кнопка iOS, вложенная в представления, не получающие нажатия Как добавить содержимое NSArray в начале непустого NSMutableArray? Конвертировать из универсального приложения в iPhone? Приложение работает в симуляторе, но не на Apple Watch Получение объектов Core Data в фоновом режиме: объекты не сбрасываются Видео в реальном времени с наложением на веб-страницу для iPad? Цель C: как получить эквивалент строки или имя переменной для вызова аргумента метода Понимание этого использования «(Private)» в заявлении @interface Проверить двойное нажатие в режиме редактирования

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

Я пытаюсь понять, как я могу изменить громкость 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 тома AVAudioMxing должно быть то, что мне нужно!

Тем не менее, в течение жизни я не могу решить, как реализовать этот процесс в коде в моей текущей настройке. Я могу получить доступ к mainMixer.volume / outputvolume например:

 audioPlayer.audioNode?.engine?.mainMixerNode.outputVolume=0 

но это, похоже, не работает. Как соединяются компоненты AV и SCN?

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

Заранее спасибо.