SDL, кажется, не предоставляет легкую ловушку для того, что вы хотите. Как только вы активируете Mix_PlayMusic , у вас есть ловушка, которая будет уведомлена о завершении воспроизведения музыки с Mix_HookMusicFinished , но это все.
Вы можете использовать полностью независимый механизм часов для видео и полагать, что время будет «просто соответствовать» (например, если это 4-минутная песня, она будет воспроизведена ровно через 4 минуты после вызова воспроизведения) , Но поскольку я сомневаюсь, что вы разрабатываете для ОС реального времени , результаты не будут идеальными.
Возможно, вы сможете установить хук через Mix_SetPostMix . «Эффект», который вы бы установили, на самом деле был бы не для изменения аудиопотока, а просто для того, чтобы следить за тем, сколько сэмплов было воспроизведено, и соответственно вносить исправления в видео. (Просто мысли вслух.)