大家分享博文的时候往往会附加动图,所以这里介绍下我常用的制作gif的方法。
作为开发者,还是喜欢直接命令行来执行任务。
命令行工具ffmpeg
ffmpeg 主要用于对音视频编解码, 命令格式:
ffmpeg [全局参数] [[输入文件参数] -i 输入文件]... {[输出文件参数] 输出文件}...
先which ffmpeg看看是否已经安装过了,
比如 输出了 /usr/local/bin/ffmpeg,什么都没有的话就需要先安装
安装 ffmpeg
brew install ffmpeg
查看命令行参数
ffmpeg -h
全局参数
-y : 覆盖输出文件, 即文件已经存在就会被覆盖掉
-vol volume:改变音量(256 =正常)
每个文件主要参数
-f fmt:强制格式,设置输出格式
-fs limit_size:设置限制文件大小,以字节为单位,超过指定的文件大小时则结束转换
-ss time_off:设置开始时间偏移量,从指定时间开始转换
-vf filter_graph:设置视频过滤器
⽀持的filter的列表可以通过以下命令获得
ffmpeg -filters
常用的如下
- scale:视频/图像的缩放, 后面跟宽:高,如果某一个值是-1代表保持原来的比例自动生成,比如 1080:-1就是宽为1080,高则自动计算
- fps:帧率, 如10就是1秒10帧
- crop:视频/图像的裁剪
- trim:截取视频的⽚段
- rotate:以任意⻆度旋转视频
- overlay: 视频/图像的叠加
比如-vf "fps=10,scale=320:-1:flags=lanczos"
-c codec 或者 -codec codec :编解码器名称, 比如 -c:v -c:a 来改变视频音频的编码为新的指定编码格式
-an 忽略任何音频流
-vn 忽略任何视频流
-t hh:mm:ss[.xxx]:设定输出文件的时间长度
-to hh:mm:ss[.xxx]:如果没有设定输出文件的时间长度的画可以设定终止时间点
有了上面的概念,转GIF的命令一般用下面就行
ffmpeg -i 源文件.mp4 -vf fps=10,scale=320:-1:flags=lanczos -c:v gif 目标文件.gif
将mp4源文件转为帧率为10,宽为320,并保持宽高比,采用lanczos算法缩放后的gif文件
期间会看到一些日志信息,然后gif就转换好了。