ビデオを再生しようとしていて、ビデオを新しいものに切り替えるボタンがあり、最初以外のある時点で新しいビデオを開始します。UI や動画関連のコードはあまり書いていません。
私は次のような作品を持っています(非常にトリミングされています):
class Main(gobject.GObject):
def __init__(self):
self.player = gst.element_factory_make('playbin', 'VideoPlayer')
#.. pygtk UI/Button code
def next_video(self):
self.player.set_state(gst.STATE_NULL)
self.player.set_property('uri', 'next_video_path')
self.player.set_state(gst.STATE_PAUSED)
end = time.time() + 1
while time.time() < end:
pass
self.player.seek_simple(gst.FORMAT_TIME, gst.SEEK_FLAG_FLUSH, 100000000000)
self.player.set_state(gst.STATE_PLAYING)
if __name__ == "__main__":
Main(sys.argv)
gtk.main()
いくつかのポイント:
- 定期的に何かを発生させる必要があるため、gobject.timeout_add を使用できるようにしたかったので、GObject を使用しています。別の方法がある場合、私はそれと結婚していません。
- その 1 秒待たないと機能しません。time.sleep() を使用すると、セグ フォールトが発生します。
- ビデオの冒頭のブリップが表示されることもあれば、最初から始まることもあります。
- バックグラウンドプレイビンがあり、それらを「ホットスワップ」することが提案されています。これで問題ありません。どうすればよいかわかりません。
明らかに、これを行うには、よりクリーンで信頼性の高い方法が必要です。
TL;DR: ビデオの任意のポイントから始めて、pygtk ウィンドウでビデオからビデオに切り替えるにはどうすればよいですか?