使用new_single_shot_id在预定义的时间之后在gstreamer中发送eos

时间:2014-11-24 10:58:14

标签: gstreamer python-gstreamer

我有一个gstreamer应用程序,我正在创建一个带图像的视频。我需要在预定义的时间内创建视频。我想在预定时间后发送eos。我知道这可以使用gstClock中的new_single_shot_id来实现。但我找不到任何关于如何使用new_single_shot_id创建一个触发器的示例,该触发器绑定到将eos发送到管道的函数。

我的简化管道代码是这样的。

class Main(object):
    def __init__(self, location):
        self.pipeline = Gst.Pipeline()
        self.img = Gst.ElementFactory.make("uridecodebin", "img1")
        self.img.set_property("uri", location)
        self.pipeline.add(self.img)

        self.freeze = Gst.ElementFactory.make("imagefreeze", "freeze")
        self.pipeline.add(self.freeze)

        self.sink = Gst.ElementFactory.make("autovideosink", "sink0")
        self.pipeline.add(self.sink)

        self.img.link(self.freeze)
        self.freeze.link(self.sink)
        self.clock = self.pipeline.get_clock()
        #self.trigger = Gst.SystemClock.new_single_shot_id(self.clock, 10)

    def send_eos():
       #code to send eos
       pass

   def run(self):
       self.pipeline.set_state(Gst.State.PLAYING)
       GObject.MainLoop().run()

我是gstreamer的新手,没有c编程经验。 python中的示例将有很大帮助。

1 个答案:

答案 0 :(得分:0)

index.php