FFMPEG双输入反向第二路图像序列制作平滑循环GIF问题求助
FFMPEG 生成无缝往返滚动GIF操作方案
原有命令问题
- 仅调用了第二路输入做反向处理,完全未使用第一路正向输入,也没有做两路流的拼接,最终输出仅包含反向滚动内容
- 调色板仅基于反向流的帧生成,正向帧套用后会出现明显颜色偏差
可用命令
ffmpeg -f image2 -i ./tmp/frame-%03d.jpg -f image2 -i ./tmp/frame-%03d.jpg \ -filter_complex "[0:v]fps=25,scale=200:-1:flags=lanczos[forward];[1:v]reverse,fps=25,scale=200:-1:flags=lanczos[backward];[forward][backward]concat=n=2:v=1:a=0,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" \ -loop 0 ./tmp/test.gif
参数说明
- 分别处理两路输入:第一路
[0:v]保留原始向下滚动效果,输出为[forward]流;第二路[1:v]通过reverse滤镜处理为向上滚动效果,输出为[backward]流 - 用
concat滤镜拼接两路流,n=2指定拼接2路视频流,a=0标记无音频流 - 拼接后的流拆分后一路生成全局调色板,一路套用调色板,保证所有帧颜色显示准确
-loop 0设置GIF无限循环
可选优化
如果正向最后一帧和反向第一帧完全相同,会出现短暂停留的卡顿感,可以在反向流处理步骤加trim滤镜切掉首帧:
将[1:v]reverse,fps=25,scale=200:-1:flags=lanczos[backward]
替换为[1:v]reverse,trim=start_frame=1,fps=25,scale=200:-1:flags=lanczos[backward]
即可消除卡顿。
内容的提问来源于stack exchange,提问作者Shannon Hochkins
相关产品推荐
相关产品推荐

