我使用 SDL_mixer 函数加载我的音乐曲目:
Mix_Music * SDLCALL Mix_LoadMUS(const char *file);
为了与视频同步,我需要知道当前的音乐位置。我怎样才能确定这一点?
SDL 似乎并没有为您想要的东西公开一个简单的钩子。一旦你触发Mix_PlayMusic ,当你使用Mix_HookMusicFinished播放完音乐时,你就会收到一个钩子通知,但仅此而已。
您可以为视频使用完全独立的时钟机制,并相信时间会“排队”(例如,如果它是一首 4 分钟的歌曲,它将在您调用 play 后恰好 4 分钟播放)。但由于我怀疑您是在为Real-Time OS 开发,所以结果并不理想。
您可能可以通过Mix_SetPostMix安装挂钩。您安装的“效果”实际上并不是用于修改音频流,而只是关注已播放的样本数量并相应地对视频进行更正。(只是在这里大声思考。)