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

时间:2009-01-20 00:52:04

标签: c++ audio sdl sdl-mixer

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

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

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

我知道mp3是有用的,因为我可以在其他音乐播放器中播放它们。由于Mix_PlayingMusic返回0,我也知道它们没有播放(而不是音量被调低)。

谢谢大家!

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

MP3算法的不同实现允许对格式的不同级别的一致性。大多数音乐播放器都非常宽容,因为大多数用户宁愿听到一些不完整的东西,但普遍容忍的播放库要少得多。

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

答案 2 :(得分:0)

我遇到了同样的问题,并且用audacity重新导出mp3文件没有帮助,但通过这样做:     if(Mix_PlayingMusic()== 0)         Mix_PlayMusic() 在事件循环中,音乐在2或3次尝试后播放(每次运行程序时都不同)。 另一个解决方案是将音乐转换为.ogg文件。