用于 playbin 的 Gstreamer 自定义视频接收器
Gstreamer custom videosink for playbin
我正在尝试在 gstreamer 1.6.3 中为 playbin 创建自定义视频接收器
最终的想法是在 videosink 中有一些 videomixer 来做..东西。
目前我只想创建一个包含视频接收器的自定义 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')
此代码是我无法 post 完整的更大软件的一部分。但是,如果我注释掉 self.pipeline.set_property('video-sink', 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'.
您必须调用 videosink bin 上的 ghostpad "sink",而不是 "vs"。 pad 名称是 API 的一部分,sink 元素应该有一个名为 "sink".
的 pad
我正在尝试在 gstreamer 1.6.3 中为 playbin 创建自定义视频接收器
最终的想法是在 videosink 中有一些 videomixer 来做..东西。
目前我只想创建一个包含视频接收器的自定义 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')
此代码是我无法 post 完整的更大软件的一部分。但是,如果我注释掉 self.pipeline.set_property('video-sink', 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'.
您必须调用 videosink bin 上的 ghostpad "sink",而不是 "vs"。 pad 名称是 API 的一部分,sink 元素应该有一个名为 "sink".
的 pad