繁体   English   中英

在音频回调中录制音频

[英]Recording audio in an audio callback

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

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

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

还是应该有自己的录音回调?

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM