Python的音乐播放器无法正常工作

时间:2016-04-10 16:54:15

标签: python pygame

我希望能够使用python通过播放列表播放多首歌曲,但它只播放列表中的最后一首歌曲。请帮忙。

from pygame import mixer # Load the required library
from os import listdir
k = listdir('C:/LOCAL')
print(k)
mixer.init()
for x in k:
    y = "C:/LOCAL/" + x
    print y
    mixer.music.queue(y)
    mixer.music.load(y)
    mixer.music.play()

1 个答案:

答案 0 :(得分:2)

你的问题是你认为用pygame播放音乐会暂停音乐直到音乐结束 - 事实并非如此。结果,它尝试开始一首歌,然后它开始另一首,另一首等等。

有几种方法可以尝试纠正这个问题。你可以:

  1. 使用pygame事件和“告诉”pygame在歌曲结束时触发事件(虽然这需要在pygame中打开显示表面(窗口)),或
  2. 检测歌曲的长度,并睡眠一段时间(与您当前的代码更兼容)。
  3. 我将假设你想做选项2,因为你的代码可以更好地使用它。

    要获取MP3文件的长度(我没有尝试过任何其他类型),您可以使用Mutagen库。

    获取MP3文件长度的一些示例代码(以秒为单位):

    from mutagen.mp3 import MP3
    tracklength = MP3("/path/to/song.mp3").info.length
    

    然后,在继续循环的下一次迭代之前,您可以使用ytime.sleep替换返回的时间量。

    希望有所帮助。

    (另外,您无需在加载文件之前对其进行排队 - 仅loadplay