C语言 如何使用gstreamer命令在framebuffer上流式传输透明图像

kfgdxczn  于 2023-10-16  发布在  其他
关注(0)|答案(1)|浏览(175)

我在自定义项目具有混频器输出工作。混合器输出有一个帧缓冲器输入的背景图像,我想过滤出的绿色颜色的图像,并使其tarnspaperies使用gstreamer命令。此透明图像覆盖到混合器输出的传入视频上,因此其流式输出应该是透明的,并且能够在混合器输出中看到其他视频输入。请提供如何实现这一点的建议。
我试过下面的命令
gst-launch-1.0 filesrc location=“background2.jpg”!videocode!video/x-raw,format=ARGB!alpha方法=自定义目标r =80目标g =255目标b =80Angular =90 alpha=1.0!videoconvert!视频/x-raw,格式=UYVY!filesink location=/dev/fb0
上面的命令是过滤掉图像上的绿色颜色,但不使其透明输出。当我把这个图像叠加到其他混音器视频输入上时,我不能看到这个图像旁边的视频输入
我想知道gstreamer有这个功能,使图像透明与否

5lhxktic

5lhxktic1#

你的问题是,你是转换成UYVY与视频转换,所以它呈现到一个黑色背景。您可以使用能够预先管理alpha的合成器,例如:

gst-launch-1.0 -v \
videotestsrc ! video/x-raw,format=RGBA,framerate=30/1 ! queue ! comp.sink_0 \
filesrc location=background2.jpg ! jpegdec ! imagefreeze ! videoconvert ! video/x-raw,format=RGBA,framerate=30/1 ! alpha method=custom target-r=80 target-g=255 target-b=80 angle=90 alpha=1.0 ! queue ! comp.sink_1 \
compositor name=comp \
  sink_0::xpos=0  sink_0::ypos=0  sink_0::zorder=1 \
  sink_1::xpos=50 sink_1::ypos=50 sink_1::zorder=2 \
  ! videoconvert ! autovideosink

相关问题