我有一個播放列表在播放過程中發生變化,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