2010-06-16 2 views
13

Я сравнивал различные аудио-библиотеки, доступные на C++. Мне было интересно, я немного застрял, начиная с OpenAL. Может ли кто-нибудь указать пример программы, как записывать с микрофона, используя OpenAL в C++.Запись звука с помощью OpenAL

Заранее благодарен!

ответ

7

Последний раз, когда я проверил OpenAL, было довольно просто. Вы создаете записывающее устройство и начинаете запись. Затем вы вызываете функцию get buffer. Он будет ждать, пока не будет достаточно данных для заполнения буфера, а затем вернется, когда будет достаточно данных.

Почему бы просто не взглянуть на пример «захвата», который поставляется с OpenAL SDK ...?

+1

Это было бы файл с именем testcapture.c, если вы смотрите на исходный код OpenAL. –

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; 
} 
Смежные вопросы