我想从游戏中捕获传出的音频,并在播放时将其记录到音频文件中。这在OpenSL的框架内可能吗?就像通过将OutputMix连接到AudioRecorder一样?
您可以将回调注册到队列并在将输出排队入缓冲区队列中之前/之后获取输出缓冲区。您可能有一个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文件的实际大小有一个确定的概念。