iphone - 如何从缓冲区而不是音频文件中获取耳机插孔音频?

标签 iphone objective-c ios audioqueue

我正在开发一个应用程序,我想在其中将原始数据(文本数据)发送到耳机插孔而不是音频文件。我假设我可以通过使用 AudioQueue 框架来做到这一点。但是我不知道该怎么做。我的应用程序应该以与 squareup.com 应用程序相同的方式运行。

最佳答案

音频播放的路由取决于您设置 Audio Session 的方式:

    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 示例项目的其他问题的回答:

Realtime AudioQueue Record-Playback

How to provide audio buffer to AudioQueue to play audio?

关于iphone - 如何从缓冲区而不是音频文件中获取耳机插孔音频?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6183768/

相关文章:

iphone - NSURLConnection 和空 post 变量

php - 如何在iPhone编程中使用新的“uploads”目录通过Web服务在Wordpress服务器上上传图像?

objective-c - objective-c 中的嵌套方法调用

ios - 设置添加到表格 View 中单元格的图像的大小

cocoa - 在 Xcode 中如何找出光标所在的代码行?

ios - 在 iOS 7 中隐藏 UISearchBar 裁剪顶行

iphone - 多线程在获取照片时使用 GCD

ios - 以10米为增量记录用户的移动并在MKMapView中将其显示为一行不起作用

ios - 如何用视频设置sprite/GIF图像?

ios - NSSplitView 建议的分割分隔线没有放置在正确的位置?