Gstreamer用三个流合成图像
Posted
技术标签:
【中文标题】Gstreamer用三个流合成图像【英文标题】:Gstreamer Compositing image with three streams 【发布时间】:2016-11-16 18:55:57 【问题描述】:我正在尝试使用 gstreamer 的 videomixer 插件合成三个流。 我找到了这个线程Combine multiple images with gstreamer,我可以设法将我的两个流并排放置,但我不知道如何添加第三个。有人可以帮忙吗?
我使用和工作的原始命令:
gst-launch-1.0 uridecodebin uri=http://old.koniclab.info/fileadmin/images/koniclab_logo_negro.png ! videoscale ! video/x-raw, width=320, height=240 ! imagefreeze ! videomixer name=m sink_1::xpos=320 ! autovideosink uridecodebin uri=http://old.koniclab.info/fileadmin/images/koniclab_logo_negro.png ! videoscale ! video/x-raw, width=320, height=240 ! imagefreeze ! m.
我的版本有两个 udp 流,也可以:
gst-launch-1.0 -v udpsrc port=9000 caps='application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264' ! rtph264depay ! video/x-h264,width=640,height=480,framerate=30/1 ! h264parse ! avdec_h264 ! videoconvert ! videomixer name=m sink_1::xpos=640 ! autovideosink -v udpsrc port=9001 caps='application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264' ! rtph264depay ! video/x-h264,width=640,height=480,framerate=30/1 ! h264parse ! avdec_h264 ! videoconvert! m.
但是如何添加第三个流?
【问题讨论】:
【参考方案1】:为什么只停在 3,让我们做 4 :)
gst-launch-1.0 uridecodebin uri=http://old.koniclab.info/fileadmin/images/koniclab_logo_negro.png ! videoscale ! video/x-raw, width=320, height=240 ! imagefreeze ! videomixer name=m sink_1::xpos=320 sink_2::ypos=240 sink_3::xpos=320 sink_3::ypos=240 ! autovideosink uridecodebin uri=http://old.koniclab.info/fileadmin/images/koniclab_logo_negro.png ! videoscale ! video/x-raw, width=320, height=240 ! imagefreeze ! m. uridecodebin uri=http://old.koniclab.info/fileadmin/images/koniclab_logo_negro.png ! videoscale ! video/x-raw, width=320, height=240 ! imagefreeze ! m. uridecodebin uri=http://old.koniclab.info/fileadmin/images/koniclab_logo_negro.png ! videoscale ! video/x-raw, width=320, height=240 ! imagefreeze ! m.
让格式更好一点:
gst-launch-1.0 \
videomixer name=m sink_1::xpos=320 sink_2::ypos=240 sink_3::xpos=320 sink_3::ypos=240 ! autovideosink \
uridecodebin uri=http://old.koniclab.info/fileadmin/images/koniclab_logo_negro.png ! videoscale ! video/x-raw, width=320, height=240 ! imagefreeze ! m. \
uridecodebin uri=http://old.koniclab.info/fileadmin/images/koniclab_logo_negro.png ! videoscale ! video/x-raw, width=320, height=240 ! imagefreeze ! m. \
uridecodebin uri=http://old.koniclab.info/fileadmin/images/koniclab_logo_negro.png ! videoscale ! video/x-raw, width=320, height=240 ! imagefreeze ! m. \
uridecodebin uri=http://old.koniclab.info/fileadmin/images/koniclab_logo_negro.png ! videoscale ! video/x-raw, width=320, height=240 ! imagefreeze ! m.
在处理结束时开始创建元素没有问题..使用gst-launch您只需定义哪些元素链接到哪些其他元素..其余的gst-launch可以自己解决..
您只需复制粘贴创建输入的部分,无论它是什么,最后链接到 m。 ..那么你需要添加另一个 sink_XX::some-pos=ZZZ。
我想你可以弄清楚其余的。
HTH
【讨论】:
谢谢你,这很有效,而且确实看起来格式很好。出于某种原因,我收到一条错误消息,指出没有 glvideomixer 元素,但使用 videomixer 可以。 @alainbaumann 更改为 videomixer.. 如果它解决了您的问题,您可以在投票数下方打勾来接受问题,如果您真的喜欢它,您也可以投票以上是关于Gstreamer用三个流合成图像的主要内容,如果未能解决你的问题,请参考以下文章