如何在FFmpeg Shell转GIF脚本中添加reverse反转滤镜效果
脚本修改方案
完整修改后代码
palette="/tmp/palette.png" base_filters="fps=12,scale=256:-1:flags=lanczos" # 生成调色板 ffmpeg -v warning -i "$1" -filter_complex \ "[0:v]${base_filters},split[orig][rev]; \ [rev]reverse[r]; \ [orig][r]concat=n=2:v=1:a=0,palettegen" \ -y "$palette" # 生成最终正放+倒放GIF ffmpeg -v warning -i "$1" -i "$palette" -filter_complex \ "[0:v]${base_filters},split[orig][rev]; \ [rev]reverse[r]; \ [orig][r]concat=n=2:v=1:a=0[x]; \ [x][1:v]paletteuse" \ -y "$2"
改动说明
- 保留你原有配置的12帧率、256宽度自适应缩放、lanczos采样参数,不需要调整原有设置
- 两个ffmpeg处理步骤都改用
filter_complex实现流拆分、倒放、拼接逻辑:- 把处理好的原始视频流用
split拆成2份,一份保留正放效果,一份用来做倒放 - 对倒放素材加
reverse滤镜实现播放方向反转 - 用
concat滤镜把正放流和倒放流拼接起来,最终输出时长为原视频的2倍
- 把处理好的原始视频流用
可选优化
如果觉得正放最后一帧和倒放第一帧重复导致卡顿,可以把倒放的处理逻辑改成[rev]reverse,trim=start_frame=1[r],跳过倒放的第一帧,播放过渡会更流畅。
内容的提问来源于stack exchange,提问作者user6097845
相关产品推荐
相关产品推荐

