2010-06-16 26 views
13

C++ 'da bulunan çeşitli ses kütüphanelerini karşılaştırıyorum. Merak ediyordum, OpenAL ile başlayalım. Birisi C++ 'da OpenAL kullanarak bir mikrofondan nasıl kayıt yapılacağını örnek bir programa işaret edebilir.OpenAL ile Ses Kaydetme

Şimdiden teşekkürler!

cevap

7

Son kez OpenAL'i kontrol ettim, oldukça basitti. Kayıt cihazını oluşturup kaydı başlatırsınız. Daha sonra get buffer işlevini çağırırsınız. Arabellek doldurmak için yeterli veri olana kadar bekleyecek ve yeterli veri olduğunda geri dönecektir.

Neden OpenAL SDK ile birlikte gelen "yakalama" örneğine bakmıyoruz?

+1

kullanarak örnek getir. –

25

açın giriş cihazı ve alcCaptureStart kullanarak kaydetmeye başlamak ve OpenAL'in kaynak koduna arıyorsanız, testcapture.c adlı bir dosya olacaktır 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; 
}