从内置音频输入捕获音频并能够在请求时实时读取原始采样值(如 .wav 中)的最简单方法是什么,就像从套接字读取一样。
希望代码使用 Apple 的框架之一(音频队列)。文档不是很清楚,我需要的是非常基础的。
为此尝试使用 AudioQueue 框架。您主要需要执行3个步骤:
- 设置音频格式如何对传入的模拟音频进行采样
- 使用 AudioQueueNewInput() 开始一个新的录音 AudioQueue
- 注册一个处理传入音频数据包的回调例程
在步骤 3 中,您有机会使用 AudioQueueGetProperty() 分析传入的音频数据
大致是这样的:
static void HandleAudioCallback (void *aqData,
AudioQueueRef inAQ,
AudioQueueBufferRef inBuffer,
const AudioTimeStamp *inStartTime,
UInt32 inNumPackets,
const AudioStreamPacketDescription *inPacketDesc) {
// Here you examine your audio data
}
static void StartRecording() {
// now let's start the recording
AudioQueueNewInput (&aqData.mDataFormat, // The sampling format how to record
HandleAudioCallback, // Your callback routine
&aqData, // e.g. AudioStreamBasicDescription
NULL,
kCFRunLoopCommonModes,
0,
&aqData.mQueue); // Your fresh created AudioQueue
AudioQueueStart(aqData.mQueue,
NULL);
}
我建议Apple AudioQueue 服务编程指南有关如何启动和停止 AudioQueue 以及如何正确设置所有所需对象的详细信息。
您还可以仔细查看 Apple 的演示程序 SpeakHere。但恕我直言,一开始就有点令人困惑。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)