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ę!
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ę!
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 ...?
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;
}
które byłyby plik o nazwie testcapture.c, jeśli szukasz na kod źródłowy OpenAL. –