我想从游戏中捕获传出的音频,并在播放时将其记录到音频文件中。这在OpenSL的框架内是可能的吗?比如把OutputMix连接到AudioRecorder或者什么的?
发布于 2014-01-27 09:39:51
您可以将回调注册到队列,并在将输出缓冲区排队到缓冲区队列之前/之后获取输出缓冲区。您可以在一个新缓冲区的每个队列中写入一个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设置将在在这页上中详细解释。
在C++中创建WAV文件的一种非常基本的方法可以找到这里,请注意,您必须对整个WAV文件的实际大小有一个非常明确的了解,因为它是其头文件的一部分。
https://stackoverflow.com/questions/21005185
复制相似问题