Python下Gstreamer视频回放的讨论

文中的技术出处Python GStreamer Tutorial

最简单的播放视频方法:

gst-launch-0.10 playbin uri=file:///path/to/视频文件

在Python里播放

  1. self.player = gst.element_factory_make("playbin", "player")
  2. bus = self.player.get_bus()
  3. bus.add_signal_watch()
  4. bus.enable_sync_message_emission()
  5. bus.connect(‘message’, self.on_message)
  6. bus.connect(‘sync-message::element’, self.on_sync_message)
  7. self.player.set_property(‘uri’, "file://" + filepath)
  8. self.player.set_state(gst.STATE_PLAYING)
  9.  
  10. def on_message(self, bus, message):
  11.                  t = message.type
  12.                  if t == gst.MESSAGE_EOS:
  13.                                   self.player.set_state(gst.STATE_NULL)
  14.                                   self.button.set_label("Start")
  15.                  else if t == gst.MESSAGE_ERROR:
  16.                                   self.player.set_state(gst.STATE_NULL)
  17.                                   self.button.set_label("Start")def on_sync_message(self, bus, message):
  18.                  if message.structure is None:
  19.                                   return  message_name = message.structure.get_name()
  20.                  if message_name == ‘prepare-xwindow-id’:
  21.                                   imagesink = message.src
  22.                                   imagesink.set_property(‘force-aspect-ratio’, True)
  23.                                   imagesink.set_xwindow_id(self.movie_window.window.xid)

本想翻译一下那篇教程,但是发现文字其实很少,大家应该是没问题的。而且WP的代码缩进都给我去了,不大适合贴代码。我的播放器其实视频部分用playbin就可以了,可能会加上拖放,加字幕,在影片上显示状态等等功能吧,那些都和视频音频混合无关了。然后就是加上自动下载BT文件和影片介绍,还有在douban改喜好的部分了。唉,我的效率好低。可是原来想的P2P电视离PPstream越来越远,离Miro越来越近了倒是。

Related posts:

  1. 终于知道怎么调用Gstreamer放电影了

Leave a Reply