我正在写一个基于libvlc的小型自定义播放器。我已经使用了https://github.com/hartror/python-libvlc-bindings/blob/master/examples/gtkvlc.py的大部分代码,就像我需要的那样播放单曲。
现在我想在之前完成之后切换到另一个轨道。为此,我捕获回调“EventType.MediaPlayerEndReached”并在回调处理程序中编写代码:
<------>def endCallback(self,event):
<------><------>fname = vlc_controller.GetNextTrack()['url']
<------><------>self.w.set_title(fname)
<------><------>self.vlc.player.set_mrl(fname)
<------><------>self.w.set_title('after set_mrl')
<------><------>self.vlc.player.play()
<------><------>self.w.set_title('after play')
现在,当这个代码被执行时,它会卡在self.vlc.player.set_mrl(fname)
上并且不再继续下去,因此我看不到下一个跟踪。
我已尝试使用(vlc.stop()
,vlc.set_media
而不是vlc.set_mrl
)此代码的不同变体,但没有任何作用
终于....我认为最好的选择是在python 2线程上创建多线程应用程序:
有一段时间我害怕多线程,但现在我知道这是完成这项任务的最佳方式