2

SDL_mixer関数を使用して音楽トラックをロードします。

Mix_Music * SDLCALL Mix_LoadMUS(const char *file);

ビデオと同期するには、現在の音楽の位置を知る必要があります。どうすればこれを判断できますか?

4

1 に答える 1

1

SDL は、必要なものに対する簡単なフックを公開していないようです。Mix_PlayMusicをトリガーすると、 Mix_HookMusicFinishedで音楽の再生が終了したときに通知されるフックがありますが、それだけです。

ビデオに完全に独立したクロック メカニズムを使用し、タイミングが「ちょうど一致する」ことを信頼できます (たとえば、4 分の曲の場合、play を呼び出してからちょうど 4 分後に再生が終了します)。しかし、あなたがReal-Time OS向けに開発しているとは思えないので、結果は理想的ではありません。

Mix_SetPostMixを介してフックをインストールできる場合があります。インストールする「エフェクト」は、実際にはオーディオ ストリームを変更するためのものではなく、再生されたサンプルの数を監視し、それに応じてビデオを修正するだけです。(ここで大声で考えているだけです。)

于 2010-03-09T18:57:19.123 に答える