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