我有一个音频回调,我用它来访问bufferList并分析音频。
我也需要录制这段音频。首先,在同一个回调中进行录音是否明智?
例如memcpy(void *dest, ioData->mBuffers[0].mData, int byteCount);
或者录音应该有它自己的回调?
不管怎样,这个memcpy是正确的方式吗?我该如何将这个音频写到文件中?
一旦音频输入完成并将数据传递给文件写入器,totalByteCount是否应与空* dest上的指针算法一起使用?
在core-audio渲染回调中录制音频的最佳方式是什么?
发布于 2013-04-29 20:02:04
我认为你可以有两个不同的回调,分别用于输入和输出音频流。通常,当您打开一个特定的流时,它可以是输入或输出,您也可以指定回调。在回调中,你可以做所有的音频处理,只要你能满足回调截止日期,否则可能会丢失音频样本。更好的方法是使用某种循环缓冲区,在回调中,您只需填充缓冲区即可。您可以在主线程中执行所有其他处理(以及录制)。我不确定您使用的是哪个音频框架。我在我的项目中使用了portaudio,它工作得很好。Portaudio还提供了一个无锁的循环缓冲区,可以在回调中使用,而不需要线程锁定机制。下面的链接可能会对你有所帮助。
http://portaudio.com/docs/v19-doxydocs/paex__record_8c.html.
http://portaudio.com/docs/v19-doxydocs/paex__shore_8c.html
https://stackoverflow.com/questions/16276933
复制相似问题