因為播放MP3時,主程式會無法動作產生"沒有回應"的訊息,
所以想出解決方法是使用multiprocess多進程的方式,產生子進程來播放,
學習到原來使用子進程把它變成全域副程式:
def PlayStart(mp3):
mp3.play()
time.sleep(10)
mp3.stop()
主呼叫程序:
def OnPlay(self, event):
'''Play MP3'''
global mp3
plfileid = self.playlist.GetItem(event.m_itemIndex,0).GetText() # Download file ID
filename = r'F:/Test/' + plfileid
mp3 = mp3play.load(filename)
try:
p = Process(target=PlayStart, args=(mp3,))
p.start()
p.join
except:
print 'error!!'
結果發生了Error:
File "F:\Python27\lib\pickle.py", line 880, in load_eof
raise EOFError
EOFError
Exception AttributeError: "'AudioClip' object has no attribute '_mci'" in <bound method AudioClip.__del__ of <mp3play.windows.AudioClip object at 0x0321F290>> ignored
解決辦法尋找中...
因為太少人使用mp3play這個套件,所以上網找不到相關資訊,
看來只好重回pymedia的懷抱,看了一長串官方範例及他人範例後
http://pymedia.org/tut/dump_wav.html
http://www.cnblogs.com/myqiao/archive/2011/08/07/2129777.html
寫出了利用子進程播放的成功程式,但播放出來後,即使關掉主程式也無法停止音樂,
看來還有下一步要忙...
沒有留言:
張貼留言