14

私はC++で利用可能なさまざまなオーディオライブラリを比較してきました。不思議に思っていたのですが、OpenALから始めて行き詰まっています。誰かがC++でOpenALを使用してマイクから録音する方法のサンプルプログラムを指摘できますか?

前もって感謝します!

4

2 に答える 2

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;
}
于 2010-07-02T09:31:38.290 に答える
8

前回OpenALをチェックしたときは、とても簡単でした。記録装置を作成し、記録を開始します。次に、getbuffer関数を呼び出すだけです。バッファを満たすのに十分なデータがあるまで待機し、十分なデータがあるときに戻ります。

OpenAL SDKに付属している「キャプチャ」の例を見てみませんか...?

于 2010-06-26T08:35:30.427 に答える