Я пытаюсь воспроизвести видео и у меня есть кнопка, которая переключает видео на новое, запускает новое в какой-то момент, отличный от начала .Я не написал много 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, начиная с произвольной точки в видео?