Запись звука с помощью OpenAL
Я сравнивал различные аудио-библиотеки, доступные на С++. Мне было интересно, я немного застрял, начиная с OpenAL. Может ли кто-нибудь указать пример программы, как записать с микрофона с помощью OpenAL в С++.
Спасибо заранее!
Ответы
Ответ 1
В прошлый раз, когда я проверил OpenAL, это было довольно просто. Вы создаете записывающее устройство и начинаете запись. Затем вы вызываете функцию get buffer. Он будет ждать, пока не будет достаточно данных для заполнения буфера, а затем вернется, когда будет достаточно данных.
Почему бы просто не взглянуть на пример "захвата", который поставляется с OpenAL SDK...?
Ответ 2
Откройте устройство ввода и начните запись с помощью 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;
}