如何使用 gstreamer 命令在帧缓冲区上传输透明图像

问题描述 投票:0回答:1

我正在开发具有混音器输出的自定义项目。混合器输出具有一个用于背景图像的帧缓冲区输入,我想过滤掉图像上的绿色并使用 gstreamer 命令使其透明。该透明图像叠加到混音器输出的传入视频上,因此流输出应该是透明的,并且能够看到混音器输出中的其他视频输入。请提供如何实现这一目标的建议。

我已经尝试过下面的命令

gst-launch-1.0 filesrc 位置=“background2.jpg”! jpegdec !视频转换!视频/x-raw,格式=ARGB! alpha 方法=自定义 target-r=80 target-g=255 target-b=80 角度=90 alpha=1.0 !视频转换!视频/x-raw,格式=UYVY!文件接收器位置=/dev/fb0

以上命令过滤掉图像上的绿色,但不使其透明输出。当我将此图像叠加到其他混音器视频输入上时,我无法看到该图像旁边的视频输入

我想知道gstreamer有没有这个功能让图像透明

c gstreamer alpha framebuffer mixer
1个回答
0
投票

您的问题是您正在使用 videoconvert 转换为 UYVY,因此它呈现在黑色背景上。 您可以使用能够预先管理 aplha 的合成器,例如:

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
© www.soinside.com 2019 - 2024. All rights reserved.