SDL。当前音乐位置

发布于 2024-08-24 10:18:04 字数 149 浏览 8 评论 0原文

我使用 SDL_mixer 函数加载音乐曲目:

Mix_Music * SDLCALL Mix_LoadMUS(const char *file);

为了与视频同步,我需要知道当前的音乐位置。 我怎样才能确定这一点?

I load my music track using SDL_mixer function:

Mix_Music * SDLCALL Mix_LoadMUS(const char *file);

For synchronization with video I need to know current music position.
How can I determine this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

逆流 2024-08-31 10:18:04

SDL 似乎没有为您想要的东西提供一个简单的钩子。一旦触发 Mix_PlayMusic,您就会收到通知音乐已通过 Mix_HookMusicFinished 播放完毕,仅此而已。

您可以为视频使用完全独立的时钟机制,并相信时间会“恰好对齐”(例如,如果是一首 4 分钟的歌曲,则在您调用播放后的 4 分钟内就会播放完毕)。但由于我怀疑您正在开发实时操作系统,所以结果胜出不要太理想化

您可以通过 Mix_SetPostMix 安装挂钩。您安装的“效果”实际上并不是用于修改音频流,而只是密切关注已播放的样本数量并相应地对视频进行更正。 (只是在这里大声思考。)

SDL doesn't seem to expose an easy hook for what you want. Once you trigger Mix_PlayMusic you have a hook to be notified when the music is done playing with Mix_HookMusicFinished, but that's about it.

You could use a completely independent clock mechanism for the video, and trust that the timing is going to "just line up" (e.g. if it's a 4 minute song, it will be done playing exactly 4 minutes after you call play). But since I doubt you're developing for a Real-Time OS, the results won't be ideal.

It might be possible for you to install a hook via Mix_SetPostMix. The "effect" you'd install wouldn't actually be for modifying the audio stream, but just keeping tabs on how many samples have been played and do corrections to the video accordingly. (Just thinking out loud here.)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文