【问题标题】:Pygame fails to play some mp3 files but not othersPygame 无法播放某些 mp3 文件,但不能播放其他文件
【发布时间】:2018-02-05 03:34:24
【问题描述】:

我正在开发一个使用 Python 3.5.2 播放 mp3 文件的应用程序,该应用程序在 pygame 1.9.3 的 IDLE 中运行。问题是某些 mp3 文件可以正确播放,而另一些则根本无法播放。

用于评估问题的测试代码:

import pygame
from pygame import mixer
from pygame.locals import *
pygame.init()
mixer.init()
mixer.music.load('good.mp3')
mixer.music.play()
u = input('Good file')
mixer.music.load('bad.mp3')
mixer.music.play()
u = input('Bad file')

标记为“好”的文件可以正常播放,而标记为“坏”的文件则不能正常播放。两个文件都在同一个目录中;两个文件都用音乐播放器播放;并且这两个文件都适用于 Windows 7 机器上的 python 3.4 和 pygame。

【问题讨论】:

    标签: python pygame mp3


    【解决方案1】:

    可能是mp3的pygame支持有问题。 可以试试VLC module吗?

    >>> import vlc
    >>> p = vlc.MediaPlayer("bad.mp3")
    >>> p.play()
    

    如果这不起作用,您可以尝试转换 mp3 -> wav -> mp3 以修复任何可能对 pygame 造成问题的编码问题。正如 chris 所建议的,ffmpeg 是最简单的编码方式。

    $ ffmpeg -i bad.mp3 -acodec pcm_u8 bad.wav
    $ ffmpeg -i bad.wav -codec:a libmp3lame -qscale:a 2 bad2.mp3
    

    【讨论】:

      【解决方案2】:

      Pygame 从来没有很好的 MP3 支持。根据文档: “请注意,MP3 支持是有限的。在某些系统上,不受支持的格式可能会使程序崩溃,例如 Debian Linux。请考虑改用 OGG。”

      http://www.pygame.org/docs/ref/music.html

      FWIW,我从来没有遇到过 OGG 文件的问题,而且使用 ffmpeg 或在线转换器很容易转换。

      【讨论】:

      • 很遗憾,这不是此应用程序的实用解决方案。
      • 但是使用这种方法不是解决了问题吗?那么这将是一个解决方案,尽管不是最佳解决方案? stackoverflow.com/questions/5464912/…
      猜你喜欢
      • 2015-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多