题
我想从游戏中捕获传出音频,并将其录制为音频文件,如播放。这是否可以在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文件的非常基本的手段可以找到这里
不隶属于 StackOverflow