0

我有一个音频回调,用于访问 bufferList 并分析音频。

我也需要录制这个音频。首先,在同一个回调中进行录音是否明智?

例如memcpy(void *dest, ioData->mBuffers[0].mData, int byteCount);

或者录音应该有自己的回调?

无论哪种方式,这 memcpy 是正确的方法吗?我如何将此音频写入文件?

音频输入完成并将数据传递给文件写入器后,是否应将 totalByteCount 与 void * dest 上的指针算术一起使用?

在核心音频渲染回调中录制音频的最佳方式是什么?

4

1 回答 1

0

我认为您可以为输入和输出音频流分别设置两个不同的回调。通常,当您打开特定流时,它可以是输入或输出,您也可以指定回调。在回调中,您可以完成所有音频处理,前提是您可以满足回调截止日期,否则您可能最终会丢失音频样本。更好的方法是使用某种循环缓冲区,它是您只需填充缓冲区的回调。您可以在主线程中进行所有其他处理(以及录制)。我不确定您使用的是哪个音频框架。我在我的项目中使用了portaudio,它运行良好。Portaudio 还提供了一个无锁循环缓冲区,可以在回调内部使用,无需线程锁定机制。以下链接可能会对您有所帮助。

http://portaudio.com/docs/v19-doxydocs/paex__record_8c.html。

http://portaudio.com/docs/v19-doxydocs/paex_ocean_shore_8c.html _ _

于 2013-04-29T12:02:03.640 回答