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

时间:2017-03-14 19:11:09

标签: ffmpeg gstreamer

我正在尝试通过在终端中输入命令来找到创建vsync / hsync效果的方法。 gstreamer或ffmpeg可以这样做吗?

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

Hsync

我正在使用ubuntu 16.04(linux)

2 个答案:

答案 0 :(得分:1)

对于垂直滚动,

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是从上到下滚动的持续时间。对于无缝循环,您必须修剪最后一帧。为此,请改用-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

答案 1 :(得分:0)

这是GStreamer的一种方式:

您可以使用frei0r插件库,其中包含frei0r-filter-nosync0r元素:

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

此元素的属性是可控的,这意味着您可以在流时间上修改它。 (https://gstreamer.freedesktop.org/documentation/application-development/advanced/dparams.html

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