2013-02-28 196 views
0

我正在写一个基于libvlc的小型自定义播放器。我已经使用了许多来自https://github.com/hartror/python-libvlc-bindings/blob/master/examples/gtkvlc.py的代码,可以像我需要的那样播放单曲。 现在,我想在之前完成之后将ti swtich移动到另一个轨道。要做到这一点我抓住回调“EventType.MediaPlayerEndReached”,并在回调处理我写的代码:pygtk vlc播放器不会播放下一首曲目

<------>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') 

现在,当这个代码被执行时stucks上self.vlc.player.set_mrl(FNAME)和不走得更远,因此我看到没有下一个曲目。 我尝试使用此代码的不同变化(vlc.stop(),vlc.set_media代替vlc.set_mrl),但没有任何工程

+0

最好的办法到目前为止,我ivestigated是set_media()会导致一个问题。它不返回 – 1099511627776 2013-02-28 10:08:52

+0

通过使用MediaListPlayer而不是MediaPlayer发现了一些解决方法,但它也有一些错误。有关详情,请访问http://forum.videolan.org/viewtopic.php?f=32&t=108750 – 1099511627776 2013-03-01 09:00:34

回答

0

最后.... 我认为最好的choise是使多线程应用在蟒蛇 2个线程:

  1. 主线程 - gtk.loop和显示视频的其他一些认为
  2. 其他线程,使媒体的切换。

有一段时间我很害怕多线程的,但现在我知道,这是做这个任务

相关问题