OpenSL可以记录自己吗?

时间:2014-01-08 19:50:32

标签: android capture opensl

我想从游戏中捕获传出的音频,并在播放时将其录制到音频文件中。这可能在OpenSL的框架内吗?比如将OutputMix连接到AudioRecorder,还是什么?

先谢谢。

1 个答案:

答案 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文件的实际大小有一个非常明确的概念,因为它是它的标题的一部分。