FFmpeg 转 高清Gif

658 阅读1分钟

ffmpeg 转 gif 的难点在于要保证清晰度,不能卡顿,并且gif不至于太大(<1MB)。

mp4 转 gif

FFmpeg初级命令:

ffmpeg -i xxx.mp4 xxx.gif

普通命令行转gif不够高清,使用{全局调色板}优化命令:

(1) 全局调色板:

ffmpeg -i xxx.mp4 -vf "split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" xxx.gif

(2) 局部调色板:

ffmpeg -i xxx.mp4 -vf "split[s0][s1];[s0]palettegen=stats_mode=single[p];[s1][p]paletteuse=new=1" xxx.gif

mp4 转 gif 的问题在于转出的 gif 过大,超过1MB的gif已经很大了,更别说几十M。

(1) 等比缩放压缩 scale

ffmpeg -i xxx.mp4 -vf "scale=180:-1,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" xxx.gif

(2) 自定义分辨率

ffmpeg -i xxx.mp4 -vf "split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" -s 720x1280 xxx.gif

(3) 自定义帧率

ffmpeg -i xxx.mp4 -vf "split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" -r 20 xxx.gif

最终公式:

ffmpeg -i xxx.mp4 -vf "fps=5,scale=180:-1,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" xxx.gif

参考:

www.freesion.com/article/399…