admin管理员组文章数量:1645262
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博客
版权声明:本文标题:Ubuntu系统下把视频转换成gif图片 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1729396740a1199806.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论