0

画像付きのビデオを作成している gstreamer アプリケーションがあります。事前定義された時間のビデオを作成する必要があります。事前定義された時間の後に eos を送信したいと思います。これは、gstClock の new_single_shot_id を使用して実現できることを知っています。しかし、パイプラインに eos を送信する関数にバインドされたトリガーを作成するために new_single_shot_id を使用する方法の例は見つかりませんでした。

私の簡略化されたパイプライン コードは次のようになります。

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 の例は非常に役立ちます。

4

1 に答える 1

0

self.pipeline.send_event(Gst.Event.new_eos())

于 2015-07-16T16:36:50.740 に答える