我想从游戏中捕获传出的音频,并在播放时将其录制到音频文件中。这可能在 OpenSL 的框架内吗?就像通过将 OutputMix 连接到 AudioRecorder 或其他方式一样?
问问题
285 次
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 回答