我有以下GStreamer Pipeline,它接受来自UDP的视频流,并使用自定义插件(myoverlayrendererplugin)渲染覆盖,该插件派生自GstPushSrc类:
gst-launch-1.0 \
videomixer name=mix ! videoconvert ! \
video/x-raw,width=800,height=480,pixel-aspect-ratio=1/1 ! xvimagesink \
udpsrc do-timestamp=false port=8554 ! decodebin ! \
videoscale ! video/x-raw,width=800,height=480,pixel-aspect-ratio=1/1 ! mix.\
myoverlayrendererplugin ! video/x-raw,format=ARGB,width=800,height=480 ! mix.
单独显示两个流。当混合时,仅当两个流都处于活动状态时,即只有udpsrc读取数据时,才会播放管道(即打开合成图像的最终XWindow)。当我不使用视频插件时,即使没有数据输出也会激活输出,但输入始终显示在渲染图像的顶部而不是渲染图像下方。
如何将视频混合器设置为不等待来自所有流的传入数据?或者,当没有输入数据可用时,是否可以让视频插件发送空帧?或者我是否必须编写一个定期检查udpsrc上可用数据的应用程序,并在数据可用时将其动态链接到调音台?
我还尝试在视频节目和混音器之间添加一个队列/队列2到管道,但这也没有帮助。我在Ubuntu 15.04上使用GStreamer 1.4.5。之后,所有内容都将移植到自定义嵌入式平台。
感谢您的支持和最诚挚的问候
的Stefan