SDL. Текущая музыкальная позиция - PullRequest
2 голосов
/ 09 марта 2010

Я загружаю свою музыкальную дорожку, используя функцию SDL_mixer:

Mix_Music * SDLCALL Mix_LoadMUS(const char *file);

Для синхронизации с видео мне нужно знать текущую музыкальную позицию. Как я могу это определить?

1 Ответ

1 голос
/ 09 марта 2010

SDL, кажется, не предоставляет легкую ловушку для того, что вы хотите. Как только вы активируете Mix_PlayMusic , у вас есть ловушка, которая будет уведомлена о завершении воспроизведения музыки с Mix_HookMusicFinished , но это все.

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

Возможно, вы сможете установить хук через Mix_SetPostMix . «Эффект», который вы бы установили, на самом деле был бы не для изменения аудиопотока, а просто для того, чтобы следить за тем, сколько сэмплов было воспроизведено, и соответственно вносить исправления в видео. (Просто мысли вслух.)

...