2

为什么 SDL_Mixer 不能播放某些 mp3 的音乐?

我正在创建的应用程序中使用 SDL_Mixer 播放音乐。在某些歌曲(实际上是整张专辑)上,音乐根本不会播放而不会返回任何错误。音乐数据使用 Mix_LoadMUS 成功加载,当使用该数据执行 Mix_PlayMusic 时,它奇怪地返回 0 表示成功但不播放音乐。我还尝试阅读 Mix_GetError() 和 SDL_GetError() (我相信它们是相同的),看看它是否会引发错误,但没有这样的运气。

我的问题是,SDL_mixer 无法播放特定 mp3 的其他原因是什么?

我知道 mp3 的功能很强大,因为我可以在其他音乐播放器中播放它们。由于 Mix_PlayingMusic 返回 0,我还知道他们没有在播放(与音量可能被调低相反)。

谢谢大家!

4

3 回答 3

1

这实际上是该特定计算机的一个声音问题。在另一台机器上尝试相同的测试时,声音完美无缺。只是一个快速说明,以防其他人遇到此问题。

于 2009-01-20T18:13:18.443 回答
0

MP3 算法的不同实现允许对格式的不同级别的一致性。大多数音乐播放器都非常宽容,因为大多数用户宁愿听到断断续续的声音也不愿听到什么,但常见的播放库容忍度要低得多。

我建议在Audacity等音频样本编辑器中打开有问题的(或全部)mp3 ,然后重新导出 mp3。由于 mp3 压缩本质上是有损的,因此您可能会损失一点质量,但它可能会解决播放问题。

于 2009-01-20T01:20:39.987 回答
0

我遇到了同样的问题,大胆地重新导出 mp3 文件并没有帮助,但是通过执行以下操作:如果 (Mix_PlayingMusic() == 0) Mix_PlayMusic() 在事件循环中,音乐在 2 或 3 次尝试后播放(每次我运行程序时都不一样)。另一种解决方案是将音乐转换为 .ogg 文件。

于 2015-08-31T15:44:46.913 回答