Я пытаюсь использовать AVAudioEnvironmentNode
для создания трехмерного пространственного звука для игры, над которой я работаю. В документации AVAudioEnvironmentNode
говорится: «Важно отметить, что только входы с форматом подключения моноканала к узлу среды пространственно распределяются. Если вход стереофонический, звук передается без пространственного преобразования. В настоящее время входы с форматами подключения более 2 канала не поддерживаются ". Я действительно обнаружил, что это так. Когда я загружаю аудиобуфер с двумя каналами в AudioPlayerNode
и подключаю узел к AVAudioEnvironmentNode
, выходной звук не распределяется по пространству. У меня вопрос, как я могу отправить монофонические данные на AVAudioEnvironmentNode
?
Я пробовал создать моно .wav
файл, используя Audacity
, а также программно загрузить AVAudioPCMBuffer
с данными синусоидальной волны. Я обнаружил, что в любом случае, когда я создаю одноканальный аудиобуфер и пытаюсь загрузить буфер в AudioPlayerNode
, моя программа вылетает со следующей ошибкой:
2016-02-17 06: 36: 07.695 Тестовая сцена [1577: 751557] 06: 36: 07.694 ОШИБКА:
[0x1a1691000] AVAudioPlayerNode.mm:423: ScheduleBuffer: обязательное условие - false: _outputFormat.channelCount == buffer. format.channelCount 2016-02-17 06: 36: 07.698 Тестовая сцена [1577: 751557] *** Завершение работы приложения из-за неперехваченного исключения 'com.apple.coreaudio.avfaudio', причина: 'требуемое условие ложно: _outputFormat.channelCount == buffer.format.channelCount '
Проверка выходной шины AVAudioPlayerNode
действительно показывает, что она ожидает 2 канала. Мне непонятно, как это можно изменить и нужно ли.
Я оговариваю, что у меня очень мало опыта работы с AVFoundation
или аудиоданными в целом. Любая помощь, которую вы можете предоставить, будет принята с благодарностью.