Как получить аудио из разъема для наушников из буфера, а не из аудиофайла?
Я работаю над приложением, в котором я хочу отправить необработанные данные (текстовые данные) на разъем для наушников, а не в аудиофайл. Я предполагаю, что могу сделать это, используя AudioQueue
фреймворк. Однако я не знаю, как это сделать. Мое приложение должно функционировать так же, как приложение squareup.com.
1 ответ
Маршрутизация воспроизведения аудио зависит от того, как вы настроили свой аудио сеанс:
UInt32 category = kAudioSessionCategory_PlayAndRecord;
error = AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(category), &category);
У вас есть пять категорий на выбор. После того, как вы выбрали категорию, iOS автоматически направит аудиосигнал в зависимости от оборудования. Например, вы можете подключить наушники, и он остановит воспроизведение динамика, вместо этого направив сигнал на выход наушников.
Чтобы выбрать лучшую категорию, взгляните на: Audio Session Programming Guide - Выбор лучшей категории.
относительно AudioQueue
Да, это будет воспроизводить необработанные аудио данные в байтовом формате. Вы запускаете очередь, и она будет периодически запрашивать дополнительные данные. Взгляните на пример проекта SpeakHere. В частности, посмотрите на AQBufferCallback
в AQPlayer.mm
,
Чтобы получить аудиоданные из буфера, а не из файла, что я и имею в виду, взгляните на мои ответы на другие вопросы, касающиеся примера проекта SpeakHere:
Запись в реальном времени AudioQueue Record-Playback
Как предоставить аудио буфер для AudioQueue для воспроизведения аудио?