使用 gst-launch 将视频帧输出到帧缓冲区的特定位置

Use gst-launch to output a video frame to certain position on framebuffer

目前我们正在使用以下命令播放视频剪辑:

gst-launch filesrc location=/media/sda1/mpeg4_640x480.mp4 ! decodebin2 name=dec ! queue ! ffmpegcolorspace ! videoscale ! video/x-raw-rgb,width=320, height=240 ! fbdevsink dec. ! queue ! audioconvert ! autoaudiosink

视频帧重新调整为 320x240 并输出到帧缓冲区。但是,我们希望将视频帧设置为特定的 (x, y)。这可能吗?

尝试使用 "videobox" 元素。在 top、left、bottom 和 right 属性中,正值用于裁剪,因此您需要使用 negative 值进行偏移。

此管道会将 640x360 视频测试源移动到 1280x720 输出的右下角:

gst-launch-1.0 videotestsrc ! video/x-raw,width=640,height=360 ! videoconvert ! videobox left=-640 right=0 top=-360 bottom=0 ! video/x-raw,width=1280,height=720 ! autovideosink

并且您可以使用 "fill" 属性 来控制 space 的填充方式。

http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-good-plugins/html/gst-plugins-good-plugins-videobox.html