0

我在 Pythonista 中制作音乐播放器。单个 mp3 文件播放正常,但如果我播放多个 mp3 文件,它们都会同时播放。

有人有什么想法吗?

这是我的代码:

import sound
import time
import glob

fileList = glob.glob("i7/*") #my folder

playerlist = []
for file in fileList:
    filename = file 
    sound.set_honors_silent_switch(False)
    sound.set_volume(1)

    player = sound.Player(filename) 
    playerlist.append(player)

for playerMin in playerlist:
    playerMin.play() #same time
4

1 回答 1

0

文档中,Player.play()只需“开始播放音频”。如果要连续播放歌曲,则必须等待播放歌曲直到上一首歌曲结束,因为play在歌曲播放完毕之前不会阻塞主线程。

尝试这个:

import sound
import time

### Setup ###
sound.set_honors_silent_switch(False)
sound.set_volume(1)

### You populate this ###
files = [...] 

### Play songs in order ###
for filename in files:
    player = sound.Player(filename) 
    player.play()
    time.sleep(player.duration) # this is the key part –– makes the loop wait to play the next song until this song is done playing
    player.stop()

这种方法超级灵活。例如,如果您想在歌曲之间淡入淡出,您可以提高音量,同时使循环sleep的时间略短于歌曲的持续时间。这变得更加复杂,但它基本上是这样完成的。

于 2019-07-28T06:27:36.847 回答