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