【问题标题】:PyGame MP3 won't playPyGame MP3 无法播放
【发布时间】:2012-06-17 02:02:58
【问题描述】:

我正在使用代码:

import pygame, sys, datetime
from pygame.locals import *
pygame.init()
screen = pygame.display.set_mode((640, 480))
screen.fill((0, 0, 0, 255))
pygame.display.set_caption("TESTIFICATE")
if datetime.date.today().month == 12 and datetime.date.today().day == 25:
    pygame.mixer.music.load("8bit-jingle-twist.mp3")
    print("Merry Christmas!")
else:
    pygame.mixer.music.load("timeless-mountains.mp3")
print("Loading Music...")
pygame.mixer.music.play(-1, 0.0)
print("Playing Background Music...")
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()
    pygame.display.update()

8bit-jingle-twist.mp3timeless-mountains.mp3 都存在并且可以通过 VLC 播放。我的音量打开,我的困惑也是如此。

【问题讨论】:

  • 我可能会建议使用普通的mixer.Sound 来播放音乐。它也同样有效。还可以考虑使用 pygame.mixer.pre_init。
  • 程序是否引发任何异常,或者它只是没有播放声音?

标签: python mp3 pygame


【解决方案1】:

您确定要在正确的目录中查找它们吗?

尝试指定完整路径,即 "c:/programs/mygame/music/8bit-jingle-twist.mp3"

【讨论】:

  • 没用,不过还是谢谢。只是黑色的窗口,但没有声音...静音仍然关闭...
【解决方案2】:

很奇怪,我只是复制了您的代码并将音频文件更改为我拥有的文件,并且效果很好。

因此我认为这与文件本身有关。

可能正如 Hugh Bothwell 所指出的,文件路径。在这种情况下,您可以做三件事:

使用整个文件路径:

pygame.mixer.music.load("C:/blah/blah/blah/8bit-jingle-twist.mp3")

不使用文件路径(文件必须与程序位于同一文件夹中)

pygame.mixer.music.load("8bit-jingle-twist.mp3")

或者使用一个文件夹跳转,你的文件夹与你的程序在同一个文件夹中。 因此,例如,您将程序放在“我的文档”中,然后在“我的文档”中创建另一个名为“Music for Pygame”的文件夹。那么代码将是:

pygame.mixer.music.load("Music for Pygame/8bit-jingle-twist.mp3")

我主要使用最后一个选项,这样您就可以通过音乐文件夹、图像文件夹等来保持文件井井有条,并且如果您移动它所在的文件夹,该程序仍然可以运行。

当然也可以是音频文件本身。确保它确实是 .mp3 并且播放良好(VLC 太棒了,可以播放任何东西,尝试在 Windows 媒体上播放它以防万一)

另外,如果使用的是 Windows 7 操作系统,请尝试以管理员身份运行它,它可能会解决问题。

(我在 Windows XP 上运行了代码,现在运行良好)

【讨论】:

  • 我尝试了所有 3 个路径选项,我可能找到了问题;在 Windows 上,C:\path\file.mp3 是否与 C:/path/file.mp3 相同?另外,如何以管理员身份运行 python 脚本?我习惯了 sudo...
  • 我使用C:/path/file.mp3C:\\path\\file.mp3。因为 ` 会导致问题。至于以管理员身份运行,我不确定。我认为这将是另一个问题,并且可能已经被问过,环顾四周,看看你能找到什么。
  • 如果您在 pygame.mixer.music.load 上没有遇到异常,我怀疑它找不到文件。
【解决方案3】:

新答案:

如果您将 mp3 文件保存为“filename.mp3”,并且您自己写下了 .mp3 文件扩展名,那么 pygame 的 pygame.mixer.music.load() 函数中的文件名必须写为“filename.mp3” .mp3',因为 python 希望您添加 .mp3。有时,如果您手动将 .mp3 保存为该文件名,则该文件名中已包含该文件名。

因此,试试这个: pygame.mixer.music.load('filename.mp3.mp3')

【讨论】:

    猜你喜欢
    • 2018-02-05
    • 2011-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多