使用 GStreamer 缩小太大视频的直接方法

Straightforward way to downscale too large video with GStreamer

我在我的项目中使用 GStreamer 处理视频。输入视频可以有多种格式(分辨率和纵横比)。例如,它可以是 400x300、1080p、4K、2000x1000 等

我想自动缩小大于 1080p 的视频。因此,如果视频是 4K,则应缩小到 1080p,但如果是 400x300 格式,则应保持原始格式。

我找到了 videoscale 管道插件,但它无法正常工作。它在没有任何区别的情况下上下变化。此外,当仅提供宽度或高度时,它不会按比例更改大小。

您知道 GStreamer 中自动将分辨率缩小到所需大小的直接方法吗?

GStreamer 的上限允许范围。所以我相信您正在寻找这样的东西:

video/x-raw,width=[1,1920],height=[1,1080],pixel-aspect-ratio=1/1

这将保持相同的纵横比,但会缩小以适应 1920x1080。

例如

gst-launch-1.0 videotestsrc ! video/x-raw,width=4000,height=2000 ! videoscale ! video/x-raw,width=[1,1920],height=[1,1080],pixel-aspect-ratio=1/1 ! autovideosink

将缩小到 1920x960。

并且:

gst-launch-1.0 videotestsrc ! video/x-raw,width=400,height=200 ! videoscale ! video/x-raw,width=[1,1920],height=[1,1080],pixel-aspect-ratio=1/1 ! autovideosink

将保持在 400x200。