从视频导出高质量 GIF 图片

依赖 ffmpegopen in new window,配置 ffmpeg 到环境变量。

1. 从视频片断导出高质量GIF

新建文本文件,将下面代码保存,并改文件名和后缀名为 gif.bat

@echo off
setlocal enabledelayedexpansion

set gif_filename="%2.gif"
set start_time=%3
set duration=%4
set palette="palette.png"
set filters="fps=%5,scale=%6:-1:flags=lanczos"

ffmpeg -v warning -ss %start_time% -t %duration% -i %1 -vf "%filters%,palettegen=max_colors=%7:stats_mode=diff" -y %palette%
ffmpeg -v warning -ss %start_time% -t %duration% -i %1 -i %palette% -lavfi "%filters% [x]; [x][1:v] paletteuse=dither=floyd_steinberg" -y %gif_filename%
1
2
3
4
5
6
7
8
9
10
11

gif.bat 放在视频所在文件夹,

在视频文件夹图标上,按住 Shift, 点击鼠标右键选择:在此处打开命令窗口

运行命令:

gif.bat input.mp4 output 00:00:25 00:00:35 10 640 256

对应解释:

gif.bat 导入视频源 导出Gif图片名 开始时间 结束/持续时间 帧率 宽度 色彩数(4-256)

2. 整个视频导出高质量GIF

同样准备文件 gif-all.bat

@echo off
setlocal enabledelayedexpansion

set gif_filename="%2.gif"
set palette="palette.png"
set filters="fps=%3,scale=%4:-1:flags=lanczos"

ffmpeg -v warning -i %1 -vf "%filters%,palettegen=max_colors=%5:stats_mode=diff" -y %palette%
ffmpeg -v warning -i %1 -i %palette% -lavfi "%filters% [x]; [x][1:v] paletteuse=dither=floyd_steinberg" -y %gif_filename%
1
2
3
4
5
6
7
8
9

调用:gif-all.bat input.mp4 output 10 640 256

FPS

  • 5 (max 60 seconds)
  • 7 (max 40 seconds)
  • 10 (max 30 seconds)
  • 20 (max 15 seconds)
  • 25 (max 10 seconds)

如果要导多个 gif 图片,可以先记录好视频中各出入点,一行行编写到另一个批处理文件,然后再 start


更新日志:

  • 2017-05-27

(本篇结束)

CC BY-NC-ND 4.0

Last Updated: 2021/7/10下午8:54:57
Contributors: xianghongai