2012-04-06 3 views
2

Я искал, но не нашел хороших примеров или учебных пособий по сохранению аудио из RemoteIO Audio Unit.Пример сохранения звука из RemoteIO?

Мои настройки: Использование API MusicPlayer, у меня есть несколько AUSamplers -> MixerUnit -> RemoteIO

Воспроизведение звука прекрасно работает. Я хотел бы добавить функциональность, чтобы сохранить аудиовыход в файл. Могу ли я сделать это в обратном вызове render на RemoteIO?

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

ответ

1

Из-за жестких требований к задержкам в обратных вызовах Audio Unit не следует делать синхронный доступ к файлам (или любые другие вызовы, которые могут потенциально блокировать, включать в себя управление памятью или действия по блокировке ОС) внутри обратного вызова RemoteIO. Вместо этого просто скопируйте аудиоданные в другой буфер (например, более крупный круговой буфер) и установите некоторое состояние, указывающее, сколько данных было скопировано. Затем в другом потоке, когда количества данных достаточно, напишите содержимое этого буфера в файл. Это может быть необработанный файл PCM, который впоследствии может быть преобразован AVAssetReader/Writer в другой тип аудиофайла.

+3

ExtAudioFileWriteAsync (outFile, numberFrames и bufferList); сделают это для вас, поэтому вы можете вызвать его из обратного вызова RemoteIO. Это действительно все, что нужно. – hooleyhoop

+0

У меня есть запись, но звук искажен - может быть, что-то не так с форматом, который я указываю? Я разместил вопрос @ здесь: http://stackoverflow.com/questions/10067117/recording-from-remoteio-resulting-caf-is-pitch-shifted-slower-distorted - любые полезные советы! –

+0

Выложили решение здесь: http://stackoverflow.com/questions/10067117/recording-from-remoteio-resulting-caf-is-pitch-shifted-slower-distorted –

Смежные вопросы