2010-06-16 23 views
13

Porównywałem różne biblioteki audio dostępne w C++. Zastanawiałem się, że utknąłem z OpenAL. Czy ktoś może wskazać przykładowy program nagrywania z mikrofonu przy użyciu OpenAL w C++.Nagrywanie dźwięku za pomocą OpenAL

Z góry dziękuję!

Odpowiedz

7

Ostatnim razem, gdy sprawdzałem OpenAL, było to całkiem proste. Tworzysz urządzenie nagrywające i rozpoczynasz nagrywanie. Następnie wystarczy wywołać funkcję bufora get. Poczeka, aż będzie wystarczająco dużo danych do wypełnienia bufora, a następnie powróci, gdy będzie wystarczająca ilość danych.

Dlaczego nie wystarczy spojrzeć na przykład "przechwytywania" dostarczany z pakietem OpenAL SDK ...?

+1

które byłyby plik o nazwie testcapture.c, jeśli szukasz na kod źródłowy OpenAL. –

25

otwierać urządzenia wejściowego i rozpocząć nagrywanie za pomocą alcCaptureStart i pobrać próbkę za pomocą 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; 
} 
Powiązane problemy