用于playbin的Gstreamer自定义视频链接

时间:2016-03-18 14:00:31

标签: python-3.x gstreamer

我试图在gstreamer 1.6.3中为playbin创建自定义视频链接

最后的想法是在视频链接中安装一些视频混合器,以便能够做到这一点。

目前我想简单地创建一个包含视频链接的自定义Bin。

目前代码的相关部分是:

def get_videomix_bin(self):
    mix_bin = Gst.Bin.new('sink')

    sink = Gst.ElementFactory.make('glimagesink')
    gp = Gst.GhostPad.new('vs', sink.get_static_pad('sink'))
    mix_bin.add(sink)

    mix_bin.add_pad(gp)

    return mix_bin


def get_pipeline(self, videosink):
    """A basic playbin pipeline pipeline"""
    self.pipeline = Gst.ElementFactory.make('playbin')
    videosink = self.get_videomix_bin()

    self.pipeline.set_property('video-sink', videosink)

    self.fireEvent('pipeline-created')

此代码是我无法发布的更大软件的一部分。但是,如果我注释掉self.pipeline.set_property('视频接收器',videosink)部分,它可以工作,所以我倾向于认为问题就在那里。

它......它基本上不起作用。管道不会开始。

在GST_DEBUG = 2时,我收到此警告

0:00:00.758103367 15560 0x7f81000050a0 WARN            uridecodebin gsturidecodebin.c:939:unknown_type_cb:<uridecodebin0> warning: No decoder available for type 'video/x-h264, stream-format=(string)avc, alignment=(string)au, level=(string)3.1, profile=(string)main, codec_data=(buffer)014d401fffe1001c674d401fe8802802dd80b501010140000003004000000c83c60c448001000468ebaf20, width=(int)1280, height=(int)720, framerate=(fraction)25/1, pixel-aspect-ratio=(fraction)1/1, parsed=(boolean)true'.

1 个答案:

答案 0 :(得分:2)

你必须在视频信箱上调用ghostpad&#34; sink&#34;而不是&#34; vs&#34;。 pad名称是API的一部分,而sink元素应该有一个名为&#34; sink&#34;的填充。