使用 gstreamer 或 ffmpeg 仅使用终端命令创建 hsync 和 vsync 视频效果

using gstreamer or ffmpeg to create hsync and vsync video effect using just terminal commands

我正在尝试通过在终端中键入命令来找到创建垂直同步/水平同步效果的方法。 gstreamer 或 ffmpeg 可以做到这一点吗?

示例:我有一张图片,我希望它重复向上滚动和/或滚动到侧面
请参阅下面的动画垂直 gif 图像示例

我正在使用 ubuntu 16.04 (linux)

对于垂直滚动,

ffmpeg -loop 1 -i in.png -filter_complex "[0][0]vstack,crop=iw:ih/2:0:t*ih/2/p" -t p out.mp4

其中 p 是从上到下滚动的持续时间。对于无缝循环,您必须 trim 结束最后一帧。为此,请改用 -t p-0.04

对于水平滚动,

ffmpeg -loop 1 -i in.png -filter_complex "[0][0]hstack,crop=iw/2:ih:t*iw/2/p:0" -t p out.mp4

这里有一个使用 GStreamer 的方法:

您可以使用具有 frei0r-filter-nosync0r 元素的 frei0r 插件库:

gst-launch-1.0 videotestsrc ! frei0r-filter-nosync0r hsync=0.5 ! autovideosink

此元素的 属性 是可控的,这意味着您可以在流式传输时对其进行修改。 (https://gstreamer.freedesktop.org/documentation/application-development/advanced/dparams.html)

对于垂直去同步,您可以在应用此滤镜前后旋转图像。为此,我想到了两个 GStreamer 元素:videoflip 和 'rotate',角度为 pi/2。旋转提供了更多可能性,因为它允许您指定希望图像旋转的角度。