如何从缓冲区而不是音频文件获取耳机插孔音频?
问题描述:
我正在处理一个应用程序,我想将原始数据(文本数据)发送到耳机插孔而不是音频文件。我假设我可以通过使用AudioQueue
框架来实现。但我不知道该怎么做。我的应用程序应该与squareup.com应用程序的功能相同。如何从缓冲区而不是音频文件获取耳机插孔音频?
答
音频播放的路由取决于你如何设置您的音频会话:
UInt32 category = kAudioSessionCategory_PlayAndRecord;
error = AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(category), &category);
你有五个类别可供选择。一旦你选择了一个类别,那么iOS会根据硬件自动路由音频信号。例如,您可能会插入耳机,它会停止扬声器播放,而不是将信号路由到耳机输出。
要选择最佳类别,请看:Audio Session Programming Guide - Choosing the Best Category。
关于AudioQueue
,是的,它会以字节格式播放原始音频数据。你开始排队,它会周期性地请求更多的数据。看看SpeakHere示例项目。具体来说,请看AQPlayer.mm
中的AQBufferCallback
。
要采购从缓冲区而文件中的音频数据 - 这是我想你的意思 - 看看我的答案,关于SpeakHere样本项目的其他问题: