我一直在比较 C++ 中可用的各种音频库。我想知道,我从 OpenAL 开始有点卡住了。有人可以指出一个示例程序如何使用 C++ 中的 OpenAL 从麦克风录制。
提前致谢!
打开输入设备并使用 alcCaptureStart 开始录制并使用 alcCaptureSamples 获取样本
#include <OpenAL/al.h>
#include <OpenAL/alc.h>
#include <iostream>
using namespace std;
const int SRATE = 44100;
const int SSIZE = 1024;
ALbyte buffer[22050];
ALint sample;
int main(int argc, char *argv[]) {
alGetError();
ALCdevice *device = alcCaptureOpenDevice(NULL, SRATE, AL_FORMAT_STEREO16, SSIZE);
if (alGetError() != AL_NO_ERROR) {
return 0;
}
alcCaptureStart(device);
while (true) {
alcGetIntegerv(device, ALC_CAPTURE_SAMPLES, (ALCsizei)sizeof(ALint), &sample);
alcCaptureSamples(device, (ALCvoid *)buffer, sample);
// ... do something with the buffer
}
alcCaptureStop(device);
alcCaptureCloseDevice(device);
return 0;
}
上次我检查 OpenAL 时,它非常简单。您创建录音设备并开始录音。然后,您只需调用 get buffer 函数。它将等到有足够的数据填充缓冲区,然后当有足够的数据时返回。
为什么不只看一下 OpenAL SDK 附带的“捕获”示例……?