3

OpenAL を使い始めたばかりです。

WAVファイルを正常にロードし、正常に再生しました。とても簡単でした。

ここで、ファイル全体を OpenAL にロードするのではなく、音楽を OpenAL にストリーミングできるようにする必要があります。これは効果音などには適していますが、ご存知のように、音楽に使用すると非常に危険な場合があります。

問題は、これに関連するものが Google で見つからないように見えることです。OGG ファイルのストリーミングに関連する例をいくつか見つけましたが、すべての音楽ファイルをサポートするシステムを作成したいと考えています。

私が理解していることから、OpenALにはこのための関数が組み込まれているはずです。しかし、私はそれらを見つけることができません。

それで、私の質問は、再生された部分を削除し、まだ再生されていない部分をインポートしながら、オーディオを OpenAL のバッファにストリーミングするにはどうすればよいですか?

これが無知な質問である場合は、お詫び申し上げます。

4

1 に答える 1

3

alSourceQueueBuffers()ソースによって直接連続して再生されるバッファをキューに入れるために使用します。再生中にalGetSourcei()、 と組み合わせて使用​​して、AL_BUFFERS_PROCESSED完全に再生され、再利用の準備ができているバッファの数を取得します。alSourceUnqueueBuffers()これらのバッファをキューからポップするので、それらに新しいデータを入力して、再度キューに入れることができます。

基本的に、スレッドでループします: 短時間スリープし、新しい使用可能なバッファをテストし、それらにデータを入力し、それらをキューに入れ、再びスリープします。

SFML はこれをSoundStream クラス(C++) に実装しています。必要に応じて参考にしてください。

于 2013-11-06T23:57:53.123 に答える