2010-03-09 14 views
1

je charge ma piste de musique en utilisant la fonction SDL_mixer:SDL. Position de la musique actuelle

Mix_Music * SDLCALL Mix_LoadMUS(const char *file); 

Pour la synchronisation avec la vidéo que je dois connaître la position de la musique actuelle. Comment puis-je déterminer cela?

Répondre

1

SDL ne semble pas exposer un crochet facile pour ce que vous voulez. Une fois que vous avez déclenché Mix_PlayMusic vous avez un crochet pour être averti lorsque la musique est terminée en jouant avec Mix_HookMusicFinished, mais c'est à peu près tout. Vous pouvez utiliser un mécanisme d'horloge complètement indépendant pour la vidéo, et vous pouvez espérer que le timing va "s'aligner" (par exemple, s'il s'agit d'une chanson de 4 minutes, elle sera jouée exactement 4 minutes après l'appel).). Mais puisque je doute que vous développiez pour un Real-Time OS, les résultats ne seront pas idéaux.

Il est possible que vous installiez un crochet via Mix_SetPostMix. L '"effet" que vous installeriez ne serait pas réellement pour modifier le flux audio, mais simplement garder un œil sur le nombre d'échantillons qui ont été joués et faire des corrections à la vidéo en conséquence. (Il suffit de penser à haute voix ici.)