Ubuntu系统下把视频转换成gif图片

1. 需求背景

        工作中,经常需要将录制的视频(.mp4  .avi  .mkv…)转换成gif动图。特别是在写博客时,用图片无法简洁清楚的表达你的想法意图,目前csdn博客文章中是无法支持本地视频演示的,但是可以另辟蹊径,我们可以将视频格式的文件先转换成 gif动图,再进行上传展示。

2. 工具安装

       我们使用 ffmpeg 软件来完成转换工作

2.1 安装命令

$ sudo add-apt-repository ppa:jonathonf/ffmpeg-3
$ sudo apt-get update
$ sudo apt-get install ffmpeg

2.2 转换命令

(1)直接转换命令:

$ ffmpeg -i out.mp4 out.gif

  (2) 带参数命令:

ffmpeg -ss 00:00:14 -i test_00.mp4 -to 18 -r 20 -s 480x960 -vf scale=200:-1 test.gif

   参数说明:

-ss 表示起始点
-i 后面跟要操作的那个视频文件
-to 表示文件的终止点, 即录制多少秒.
-r 帧速率,可以增大这个值输出更画质更优的 GIF 文件
-vf 图形筛选器,GIF 的缩放大小
-s 设置图片的长宽大小

3. 画质优化

消除图片抖动

如果只用用2.2中的转换命令,画质不是很清晰,因为使用默认的ffmpeg转换后的gif图片像素会有抖动,因此需要使用滤镜。方法如下:

3.1 脚本文件

#!/bin/sh
 
palette="/tmp/palette.png"
 
filters="fps=30,scale=960:-1:flags=lanczos"
 
ffmpeg -v warning -i $1 -vf "$filters,palettegen" -y $palette
ffmpeg -v warning -i $1 -i $palette -lavfi "$filters [x]; [x][1:v] paletteuse" -y $2

这里的fps  每秒帧率是可以调整的,数字越大图片质量越清晰。

scale 参数说明:

将输入的1920x1080缩小到960x540输出

ffmpeg -i input.mp4 -vf scale=960:540 output.mp4 

//ps: 如果540不写,写成-1,即scale=960:-1, 那也是可以的,ffmpeg会通知缩放滤镜在输出时保持原始的宽高比。

3.2  执行步骤

将上面的内容保存为脚本文件video2gif.sh  并增加可执行权限:

$ sudo chmod a+x video2gif.sh
$ ./video2gif.sh test.mp4 test.gif

这样子转换出来的gif图片格式,就很清晰了,如下是转换的对比效果图:

图一:是用2.2中的命令直接转换过来的gif图片


 图二: 是用执行脚本文件滤镜之后的gif图片


推荐使用脚本文件来转换。

4. 参考文章


High quality GIF with FFmpeg

ffmpeg的基本用法_加班猿的博客-CSDN博客_ffmpeg怎么用

Ubuntu下录制屏幕并转换成gif_游走的大千世界的烤腰子的博客-CSDN博客

猜你喜欢

转载自blog.csdn.net/u012514113/article/details/126759699
今日推荐