OpenSL可以记录自己吗?

问题描述 投票:0回答:1

我想从游戏中捕获传出的音频,并在播放时将其记录到音频文件中。这在OpenSL的框架内可能吗?就像通过将OutputMix连接到AudioRecorder一样?

android capture opensl
1个回答
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文件的实际大小有一个确定的概念。

© www.soinside.com 2019 - 2024. All rights reserved.