3

У меня возникли проблемы с работой с фреймворками iOS Audio для создания простого приложения. Я хотел бы записать звук через микрофон и воспроизвести его во время записи.Проблемы с записью и воспроизведением звука одновременно

Я пробовал каждый из слоев звуковой структуры (AVFoundation, Audio Queue API и RemoteIO), но нашел только старую документацию и сломанные примеры. Это похоже на простой запрос, который AVFoundation должен обрабатывать, но я изучил следуя другим вопросам SO и все еще нахожусь кругом в течение нескольких часов, чтобы понять это. Вот то, что я рассмотрел: (. Другие, так что пользователи также заявляют принятый ответ не конкретен и трудно осуществить даже с задержкой ~ 70ms)

Я также скачал и рассмотрел оба SpeakHere и AurioTouch примеры проектов от Apple. Я обещаю, что не буду отправлять сообщения без часов в поисковых системах и боев. Вы можете видеть, что "record audio and playback iOS simultaneously" возвращает много датированных и неработающих примеров. Я знаю, что я и сообщество могут извлечь выгоду из некоторой обновленной документации и примеров в разделе аудио. RemoteIO кажется слишком продвинутым для такой простой задачи. Еще раз спасибо за вашу помощь и внимание.

ответ

5

Соответствующий способ сделать это с помощью API-интерфейсов AudioUnit, хотя это похоже на общий сценарий, который должен обрабатываться API-интерфейсами более высокого уровня.

Я написал небольшую demo app с помощью AudioUnit. Вы можете попробовать его и изменить его для соответствия вашей цели. Демо-приложение записывает аудио и воспроизводит его одновременно, но рекомендуется использовать наушник для просмотра эффекта.

+0

хорошая работа, но он не будет работать с быстрым при мостом –

0

RemoteIO Audio Unit - единственный способ воспроизвести то, что записывается с низкой задержкой. RemoteIO - низкая латентность, потому что он выполняет звуковые обратные вызовы в отдельном выделенном потоке реального времени, поэтому он работает быстро, но также почему он немного сложнее кодировать. Все другие аудио API API iOS построены поверх RemoteIO и, таким образом, добавляют латентность.

Вам также необходимо настроить API аудио сессии приложения, чтобы запросить низкую задержку с соответствующим типом аудиосообщения. Приложение foreground может запрашивать и получать задержки ввода и вывода звука на частоте до 5,6 миллисекунд на большинстве устройств iOS большую часть времени.

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