SDL_mixer関数を使用して音楽トラックをロードします。
Mix_Music * SDLCALL Mix_LoadMUS(const char *file);
ビデオと同期するには、現在の音楽の位置を知る必要があります。どうすればこれを判断できますか?
SDL は、必要なものに対する簡単なフックを公開していないようです。Mix_PlayMusicをトリガーすると、 Mix_HookMusicFinishedで音楽の再生が終了したときに通知されるフックがありますが、それだけです。
ビデオに完全に独立したクロック メカニズムを使用し、タイミングが「ちょうど一致する」ことを信頼できます (たとえば、4 分の曲の場合、play を呼び出してからちょうど 4 分後に再生が終了します)。しかし、あなたがReal-Time OS向けに開発しているとは思えないので、結果は理想的ではありません。
Mix_SetPostMixを介してフックをインストールできる場合があります。インストールする「エフェクト」は、実際にはオーディオ ストリームを変更するためのものではなく、再生されたサンプルの数を監視し、それに応じてビデオを修正するだけです。(ここで大声で考えているだけです。)