2010-06-16 10 views
13

Ich habe verschiedene Audio-Bibliotheken in C++ verglichen. Ich habe mich gefragt, ob ich irgendwie bei OpenAL stehe. Kann jemand auf ein Beispielprogramm hinweisen, wie man mit OpenAL in C++ von einem Mikrofon aufnimmt?Aufnahme von Audio mit OpenAL

Vielen Dank im Voraus!

Antwort

7

Das letzte Mal, als ich OpenAL überprüfte, war es ziemlich einfach. Sie erstellen das Aufnahmegerät und starten die Aufnahme. Sie rufen dann einfach die Pufferspeicherfunktion auf. Es wird gewartet, bis genügend Daten vorhanden sind, um den Puffer zu füllen und dann zurückzukehren, wenn genügend Daten vorhanden sind.

Warum nicht nur das "Capture" -Beispiel betrachten, das mit dem OpenAL SDK geliefert wird ...?

+1

, dass eine Datei testcapture.c genannt werden würde, wenn man sich die OpenAL-Quellcode suchen. –

25

Öffnen Sie den Geräteeingang und starten Sie mit alcCaptureStart Aufnahme und die Probe holen mit 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; 
} 
Verwandte Themen