无法在Pygame中加载音乐

时间:2019-05-19 23:04:16

标签: python pygame

我正在使用的代码是这样:

import pygame
assert pygame.init()==(6,0)
pygame.mixer.init()
from pygame.locals import *
from time import sleep
import os
pygame.mixer.music.load('timer_end.mp3')

不幸的是,我收到此错误:

Traceback (most recent call last):
  File "C:\Python37\Lib\timer.py", line 60, in <module>
    pygame.mixer.music.load('timer_end.mp3')
pygame.error: Couldn't open 'timer_end.mp3'

我也查看了this question及其答案。不幸的是,它们没有帮助,因为.mp3首先与我的Python脚本位于同一文件中。如何使PyGame音乐正常工作?

2 个答案:

答案 0 :(得分:1)

无法识别mp3

不确定这是否是问题,因为在我看来您正在使用Windows,但是请检查pygame music docs。他们说:

  

请注意,对MP3的支持是有限的。在某些系统上,不支持的格式可能会使程序崩溃,例如Debian Linux。考虑改用OGG。

因此,请尝试将文件转换为其他格式,例如WAV或OGG。也许行得通。

使用完整路径

您发布的错误是pygame在找不到文件时给出的错误。所以@Matt的评论也许是正确的。
尝试使用完整路径,并在os.path函数的帮助下进行构建,与手工编写完整路径相比,它们更安全且更不易出错。
如果您确定音乐文件与python脚本位于同一目录中,则可以执行以下操作来获取其完整路径:os.path.abspath("timer_end.mp3")

作为最后一个资源,下面的代码将推断python文件的路径,并假定文件音乐位于同一目录中,从而构建文件音乐的完整路径。即使您从另一个目录启动python脚本,它也应该起作用。

filepath = os.path.abspath(__file__)
filedir = os.path.dirname(filepath)
musicpath = os.path.join(filedir, "timer_end.mp3")
pygame.mixer.music.load(musicpath)

答案 1 :(得分:0)

我认为此错误是由于找不到文件引起的。例如,以Windows示例Kalimba.mp3为例。这里,我在Sample Music位置有一个python文件,该文件是从另一个位置调用的。

import pygame
pygame.mixer.init()
pygame.mixer.music.load('Kalimba.mp3')

这将导致Couldn't open 'Kalimba.mp3'错误。如果我更改为完整路径

import pygame
pygame.mixer.init()
pygame.mixer.music.load('<full path>Kalimba.mp3')

这运行没有错误。我建议您使用this tutorial中所述的音乐库来整理资产文件。