2010-06-16 166 views
13

我一直在比較C++中提供的各種音頻庫。我想知道,我從OpenAL開始就陷入了困境。有人能指出一個示例程序如何使用C++中的OpenAL從麥克風記錄。使用OpenAL錄製音頻

提前致謝!

回答

7

我上次檢查OpenAL時很簡單。您創建錄製設備並開始錄製。然後您只需調用get緩衝區函數。它會一直等到有足夠的數據填滿緩衝區,然後在有足夠數據時返回。

爲什麼不看看OpenAL SDK附帶的「捕獲」示例......?

+1

這將是一個名爲testcapture.c文件,如果你正在尋找的OpenAL的源代碼,獲取樣品。 – 2010-07-02 08:03:24

25

打開輸入設備,並開始使用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; 
}