我想从游戏中捕获传出的音频,并在播放时将其录制到音频文件中。这可能在OpenSL的框架内吗?比如将OutputMix连接到AudioRecorder,还是什么?
先谢谢。
答案 0 :(得分:1)
您可以向队列注册回调,并在将其排入缓冲区队列以进行输出之前/之后获取输出缓冲区。你可以有一个wavBuffer(缓冲区大小的短数组),它在每个新缓冲区的入队中写入。然后将此缓冲区的内容写入文件。
outBuffer = p->outputBuffer[p->currentOutputBuffer]; // obtain float buffer
for ( int i = 0; i < bufferSize; ++i )
wavBuffer = ( short ) outBuffer[ i ] * 32768; // convert float to short
// now append contents of wavBuffer into a file
详细解释了队列回调的基本OpenSL设置on this page
可以找到一个用C ++创建WAV文件的基本方法here注意,你必须对整个WAV文件的实际大小有一个非常明确的概念,因为它是它的标题的一部分。