我正在尝试播放视频并有一个按钮可以将视频切换到新视频,在除开头之外的某个时间点开始新视频。我没有写太多 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 是因为我希望能够使用 gobject.timeout_add,因为我需要定期发生一些事情。如果有其他方法,我不会嫁给它。
- 没有那 1 秒的等待,它就行不通。使用 time.sleep() 会导致段错误。
- 我有时确实会看到视频开头的片段,有时它只是从头开始。
- 有人建议我有一个后台 playbin 并“热交换”它们。这会很好 - 我只是不知道该怎么做。
显然,我想要一种更清洁、更可靠的方法来做到这一点。
TL;DR:如何在 pygtk 窗口中从视频切换到视频,从视频中的任意点开始?