通过 RTP 流式传输重叠视频

Streaming Overlapped Videos over RTP

我正在尝试实现一个系统,该系统采用实时摄像机流,覆盖一些文本和符号(使用 Alpha 通道透明度);并将其作为单个视频(从一个端口)传输到 RTP/UDP。主机和客户端系统都打开了 i.MX6QP。目前,我正在尝试使用 gst-launch 找出 GStreamer 和管道系统,并且只使用测试模式作为视频源。

这是一个简化的图表来展示我正在努力实现的目标:

我看过videomixer插件,但据我了解,它仅用于叠加和播放视频,而不用于创建'transmittable'视频流。 (我可以将它与 xvimagesink 一起使用,但我无法通过 udpsink 实现管道。而且我找不到解决方法。)

我一直无法找到合适的 tools/methods 来实施上述系统。我对 videomixer 插件的看法是否正确?如果是这样,你建议我做什么?感谢任何帮助,提前致谢。

如果您在 I.MX6 上处理流,您应该查看 gstreamer-imx

中的 imxg2dcompositor 插件
gst-inspect-1.0 imxg2dcompositor

根据他们的例子,你能试试这样的东西吗:

gst-launch-1.0   \
  imxg2dcompositor name=c background-color=0x223344 \
      sink_0::xpos=0 sink_0::ypos=90 sink_0::width=160 sink_0::height=110 sink_0::zorder=55 sink_0::fill_color=0xff00ff00 sink_0::alpha=0.39 sink_0::rotation=0 \
      sink_1::xpos=0 sink_1::ypos=20 sink_1::width=620 sink_1::height=380 sink_1::fill_color=0x44441133 ! \
    queue2 ! "video/x-raw, width=800, height=600" ! imxipuvideotransform ! imxvpuenc_h264 ! rtph264pay ! udpsink \
  videotestsrc pattern=0 ! "video/x-raw, framerate=30/1" ! c.sink_0 \
  videotestsrc pattern=18 ! "video/x-raw, framerate=30/1" ! c.sink_1

我建议您不要错过视频编码部分,这在尝试设置视频流应用程序时必不可少(H.264 编码插件是 imxvpuenc_h264)。此编码步骤之后是特定的 RTP 负载程序。