我正在尝试playbin
用我自己的管道替换应用程序,因为我需要向视频添加过滤器。这是我尝试过的:
# self.pipeline = gst.ElementFactory.make("playbin", None)
# self.pipeline.set_property("uri", "appsrc://")
self.pipeline = gst.Pipeline.new("player")
source = gst.ElementFactory.make("uridecodebin", "decodebin")
source.set_property("uri", "appsrc://")
self.pipeline.add(source)
aqueue = gst.ElementFactory.make("queue", "aqueue")
aconverter = gst.ElementFactory.make("audioconvert", "aconverter")
asink = gst.ElementFactory.make("autoaudiosink", "audiosink")
self.pipeline.add(aqueue)
self.pipeline.add(aconverter)
self.pipeline.add(asink)
source.link(aqueue)
aqueue.link(aconverter)
aconverter.link(asink)
vqueue = gst.ElementFactory.make("queue", "vqueue")
vconverter = gst.ElementFactory.make("videoconvert", "vconverter")
vsink = gst.ElementFactory.make("autovideosink", "videosink")
self.pipeline.add(vqueue)
self.pipeline.add(vconverter)
self.pipeline.add(vsink)
source.link(vqueue)
vqueue.link(vconverter)
vconverter.link(vsink)
后来我连接到源的source-setup
信号,然后连接到need-data
信号给它提供数据。这适用于playbin
,即打开一个输出窗口并显示视频。使用我的自定义管道没有任何反应 - 没有打开任何窗口,当然我什么也看不到。
为什么会这样,我该如何解决?
我还尝试删除所有音频内容并仅使用视频元素,结果相同。我什至不需要这个应用程序的音频。