2010-06-16 15 views
13

He estado comparando varias bibliotecas de audio disponibles en C++. Me preguntaba, estoy atascado comenzando con OpenAL. ¿Puede alguien señalar un programa de ejemplo sobre cómo grabar desde un micrófono con OpenAL en C++?Grabación de audio con OpenAL

¡Gracias de antemano!

Respuesta

7

La última vez que revisé OpenAL fue bastante simple. Usted crea el dispositivo de grabación y comienza la grabación. Luego solo llama a la función get buffer. Esperará hasta que haya suficientes datos para llenar el búfer y luego regresará cuando haya suficientes datos.

¿Por qué no solo mira el ejemplo de "captura" que viene con OpenAL SDK ...?

+1

que sería un archivo llamado testcapture.c, si usted está buscando en el código fuente OpenAL. –

25

Abrir el dispositivo de entrada y empezar a grabar usando alcCaptureStart a buscar a la muestra utilizando 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; 
} 
Cuestiones relacionadas