我想从游戏中捕获传出音频,并将其录制为音频文件,如播放。这是否可以在opensl的框架内?喜欢将OutputMix连接到AudioreCorder,或者其他东西?

谢谢先进的。

有帮助吗?

解决方案

您可以将回调注册到队列,并在将输出缓冲区队列中熄灭之前/之后获取输出缓冲区。您可以有一个Wavbuffer(简短的阵列的缓冲区大小的长度),它被写入新缓冲区的每个eNqueue上。然后将此缓冲区的内容写入文件。

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文件的非常基本的手段可以找到这里

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top