0

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

4

1 回答 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 设置

在 C++ 中创建 WAV 文件的一个非常基本的方法可以在这里找到注意,您必须对整个 WAV 文件的实际大小有一个非常明确的想法,因为它是其标题的一部分。

于 2014-01-27T09:39:51.703 回答