0

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)それ以上進まず、その結果、NO NEXT TRACK が表示されます。

vlc.stop()(のvlc.set_media代わりに)を使用して、このコードのさまざまなバリエーションを試しましvlc.set_mrlたが、何も機能しません

4

2 に答える 2

0

最後に.... Python 2スレッドでマルチスレッドアプリケーションを作成するのが最善の選択だと思います:

  1. メインスレッド - gtk.loop と他の人が考えるビデオの表示
  2. メディアの切り替えを行う追加スレッド。

しばらくの間、私はマルチスレッド化を恐れていましたが、今ではこれがこのタスクを実行する最良の方法であることがわかりました

于 2013-03-08T07:28:08.933 に答える