【问题标题】:Recording Audio with OpenAL [closed]使用 OpenAL 录制音频 [关闭]
【发布时间】:2011-03-04 14:56:24
【问题描述】:

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

提前致谢!

【问题讨论】:

    标签: c++ audio openal


    【解决方案1】:

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

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

    【讨论】:

    • 如果您正在查看 OpenAL 源代码,那将是一个名为 testcapture.c 的文件。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多