在音频回调中录制音频



我有一个音频回调,我用它来访问bufferList和分析音频。

我也需要录下这个音频。首先,在同一个回调中做录音是明智的吗?

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

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

无论哪种方式,这记忆是正确的方式来做到这一点,我怎么写这个音频到一个文件?

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

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

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

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

http://portaudio.com/docs/v19-doxydocs/paex_ _shore_8c.html

最新更新