使用OpenAL录制音频

时间:2010-06-16 18:30:54

标签: c++ audio openal

我一直在比较C ++中提供的各种音频库。我想知道,我有点困难从OpenAL开始。有人可以指出一个示例程序如何使用C ++中的OpenAL从麦克风录制。

提前致谢!

2 个答案:

答案 0 :(得分:26)

打开输入设备并使用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;
}

答案 1 :(得分:7)

上次我检查OpenAL时非常简单。您创建录制设备并开始录制。然后,您只需调用get buffer函数。它会等到有足够的数据填满缓冲区,然后在有足够的数据时返回。

为什么不看一下OpenAL SDK附带的“捕获”示例......?