Запись аудио с [закрытым] OpenAL

13
задан Cenoc 16 June 2010 в 18:30
поделиться

2 ответа

В прошлый раз, когда я проверил OpenAL, все оказалось довольно просто. Вы создаете записывающее устройство и начинаете запись. Затем вы просто вызываете функцию получения буфера. Он будет ждать, пока не наберется достаточно данных для заполнения буфера, а затем вернется, когда будет достаточно данных.

Почему бы просто не взглянуть на пример «захвата», который поставляется с OpenAL SDK ...?

8
ответ дан 1 December 2019 в 19:30
поделиться

Откройте устройство ввода и начните запись с помощью 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;
}
27
ответ дан 1 December 2019 в 19:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: