[英]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.