尝试了各种方案:
- ttyrec + tty2gif/ttygif :时间长了后,生成 gif 太慢,效果也不是很好
- LICECap 工具录屏生成 gif :效果不尽如人意,画质太差
- ttystduio: 画质也不是很满意,而且生成文件很大
- mac 自带的 qucktime 录屏 mov + ffmpeg 转 gif + convert 优化 gif 大小:最后的方案
- mac 自带的 qucktime 还是很强大哦的,直接选取需要录屏的区域,直接进行录制就行了,最后生成 mov 文件。。
但是用默认的 ffmpeg 参数直接转换成 gif ,画质很差,后来终于从老外的 github 上搜了一段脚本(原始 url 找不到了, = =)。。
#!/bin/sh
palette="/tmp/palette.png"
filters="fps=$4,scale=$3:-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
里面通过使用 ffmpeg 预生成调色板,来提高 gif 的画质,并且通过设置缩放比率、帧率来压缩文件大小。。
使用方式:
mov2gif xxx.mov xxx.gif 800 1
这是我这边设置的参数,由于我是录制终端视频,帧率设置为 1fps ,就已经足够了,不然文件太大。。
然后再用 convert 进一步压缩 gif 大小:
convert xxx.gif -fuzz 5% -layers Optimize xxx2.gif
如果不加-fuzz 5%,优化粒度不大,这个参数可以将图片附近区域相近的颜色合并成相同值,进行压缩,通过这行命令,基本上可以继续压缩 50%的大小(对于终端视频,大块颜色都是背景色)
最后,晒下我这边的录制效果(顺带打个小广告 :)