Python Pygame没有';t播放带有诱变剂的mp3文件

Python Pygame没有';t播放带有诱变剂的mp3文件,python,pygame,tagging,mutagen,Python,Pygame,Tagging,Mutagen,在使用诱变剂标记音频文件后,pygame似乎不再能够播放该文件。但是,它成功加载了文件,对pygame.mixer.music.play()的调用不会抛出错误。我实际上使用了音乐标签库,它只是诱变剂的包装器,用于标记文件。我想知道这是否是已知的问题 标记代码 import music_tag f = music_tag.load_file('sample.mp3') f['title'] = 'Smells like teen spirit' f['artwork'] = open('nirv

在使用
诱变剂标记音频文件后,pygame似乎不再能够播放该文件。但是,它成功加载了文件,对
pygame.mixer.music.play()的调用不会抛出错误。我实际上使用了
音乐标签
库,它只是
诱变剂
的包装器,用于标记文件。我想知道这是否是已知的问题

标记代码

import music_tag

f = music_tag.load_file('sample.mp3')
f['title'] = 'Smells like teen spirit'
f['artwork'] = open('nirvana.jpg', 'rb').read()
f.save()
播放代码

from pygame import mixer
mixer.init()

mixer.music.load('sample.mp3') 

mixer.music.set_volume(0.7) 
mixer.music.play(-1) 

while True:
    query = input()
    if query == 'q':
        mixer.music.stop()
        break;
我还注意到,在移除标签后,pygame确实会播放文件,但播放过程确实非常非常失真,并且与文件上的实际音频非常不同。同时,其他mp3播放器可以播放相同的文件,带或不带标签。在输入之前,会阻止整个应用程序。使用
向下键
事件检测何时按下q(另请参阅):

从pygame导入混合器
mixer.init()
mixer.music.load('sample.mp3')
混音器。音乐。设置音量(0.7)
混音器。音乐。播放(-1)
运行=真
运行时:
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
运行=错误
如果event.type==pygame.KEYDOWN:
如果event.key==pygame.K_q:
mixer.music.stop()
运行=错误

如果我是你,我不会覆盖你读过的同一个文件。试着先改变一下。还可以尝试使用任何mp3播放器播放标记的文件。顺便说一句,该示例使用带open的
(…
,它的作用是再次关闭图像文件–这是您不做但应该做的事情do@WalterTross谢谢你的建议。用其他mp3播放器如
vlc
totem
播放标记的歌曲是可行的。问题似乎不是文件是如何打开的。我也不明白你的意思y没有覆盖同一个文件..我想,
f.save()
会覆盖以前读过的同一个文件。一般来说,这是个坏主意,尽管我注意到(在写下我的评论后)文档中的示例也有同样的作用。@WalterTross我不知道如何不覆盖同一个文件