我有一个播放列表在播放过程中发生变化,Mplayer不会在第一个轨道末尾重新加载播放列表,所以我需要做的是捕获EOF,然后重新加载mplayer到继续玩。如何使用mplayer和popen检测EOF?还是有更简单的方法,我错过了?我检查了建议的'重复'问题,我不相信它给了我答案,因为这是通过popen捕捉曲目/播放列表的结尾。mplayer - 我如何检测Python中的EOF
def play_music():
global myplaylist
global playflag
if not playflag:
mycommand = ["mplayer -really-quiet -slave -volume 1 -playlist /home/pi/scripts/playlist.txt"]
p = subprocess.Popen(mycommand, stdin=PIPE, stdout=PIPE, stderr=PIPE, shell=True)
playflag = True
else:
pass
澄清:当您运行此过程时,您想要使用播放列表启动mplayer。然后会发生一些变化(或附加到?)文件“playlist.txt”。当mplayer到达您想要重新扫描playlist.txt的轨道末尾时,如果它已经改变,那么您想要停止mplayer并使用新的播放列表重新开始。那是对的吗? –
是的,我有另一个程序,将新曲目添加到'playlist.txt。我曾计划使用“playflag”作为检查mplayer是否正在播放的一种方式,这样我就可以触发它,但我找不到方法。所以当前'play_music()'被调用时,一个新的轨道被添加到播放列表,如果它没有运行运行子进程。 HTH? – northwarks