实现 Linux 终端录屏转gif动画
By admin
- 2 minutes read - 403 words在一些开源其中,有些文档使用git动画来介绍的话效果会好很多,所以这里把在Linux终端下如何生成git动画效果整理出来,供大家参考。
安装录屏软件 asciinema
Mac
brew install asciinema
Ubuntu
sudo apt-add-repository ppa:zanchey/asciinema
Debian
sudo apt-get install asciinema
Pip安装
sudo pip3 install asciinema
目前此软件不支持 Windows。更多安装教程参考:
用法介绍
❯ asciinema -h
usage: asciinema [-h] [--version] {rec,play,cat,upload,auth} ...
Record and share your terminal sessions, the right way.
positional arguments:
{rec,play,cat,upload,auth}
rec Record terminal session
play Replay terminal session
cat Print full output of terminal session
upload Upload locally saved terminal session to asciinema.org
auth Manage recordings on asciinema.org account
optional arguments:
-h, --help show this help message and exit
--version show program's version number and exit
example usage:
Record terminal and upload it to asciinema.org:
asciinema rec
Record terminal to local file:
asciinema rec demo.cast
Record terminal and upload it to asciinema.org, specifying title:
asciinema rec -t "My git tutorial"
Record terminal to local file, limiting idle time to max 2.5 sec:
asciinema rec -i 2.5 demo.cast
Replay terminal recording from local file:
asciinema play demo.cast
Replay terminal recording hosted on asciinema.org:
asciinema play https://asciinema.org/a/difqlgx86ym6emrmd8u62yqu8
Print full output of recorded session:
asciinema cat demo.cast
For help on a specific command run:
asciinema <command> -h
录屏
录屏命令
asciinema rec
此时生成的文件将保存到临时目录里,一般为 /tmp/
目录
也可以指定文件名
asciinema rec demo.cast
当看到以下信息表示录屏工作开始,以后的操作将会被记录下来
asciinema: recording asciicast to /tmp/tmpg4auzrud-ascii.cast
asciinema: press <ctrl-d> or type "exit" when you're done
此时你可以进行正常的操作。
当操作完成后,按 ctrol-d
或 exit
退出录屏,看到提示信息
asciinema: recording finished
asciinema: press <enter> to upload to asciinema.org, <ctrl-c> to save locally
asciinema: asciicast saved to /tmp/tmp1tj9jqnx-ascii.cast
如果按enter
键会将结束自动上传到 asciinema.org
网站,按下Ctrl+C
表示进行本地存储, 这里存储位置为 /tmp/tmp1tj9jqnx-ascii.cast
。
这种方法会在用户本地生成一个 .cast
的文件,后面我们对其进行回放。
回放
我们先预览下上面生成的动画效果
asciinema play demo.cast
查看会话
有时候我们需要查看用户的所有终端历史会话内容,此时可执行命令
asciinema cat demo.cast
如果在屏幕过程中存在一些特殊命令,如 vi
,则会话内容将显示成为乱码,还有可能提示错误。
上传
我们也可以将本地生成的文件上传到公网
asciinema upload demo.cast
提示
asciinema upload demo.cast
View the recording at:
https://asciinema.org/a/KG2utenPw4pXk12TcEprPDaRh
This installation of asciinema recorder hasn't been linked to any asciinema.org
account. All unclaimed recordings (from unknown installations like this one)
are automatically archived 7 days after upload.
If you want to preserve all recordings made on this machine, connect this
installation with asciinema.org account by opening the following link:
https://asciinema.org/connect/4fc6bdf3-ecc4-445a-a045-540aa101dee1
我们可以直接在浏览器里访问上面的URL来访问生成的效果。
转成Gif
有时候我们需要将上面的录屏内容转成gif格式在网络上传播,这时我们还需要利用一些工具将其转为gif动画才可以。这里我们使用一个docker镜像 asciinema/asciicast2gif 来操作
下载镜像
下载 Docker 镜像到本地
docker pull asciinema/asciicast2gif
转换命令
docker run --rm -v $PWD:/data asciinema/asciicast2gif -s 2 -t solarized-dark demo.cast demo.gif
为了方便,我们用命令别名操作,将以下代码保存到 .bashrc
文件中,最后再执行 source ~/.bashrc
应用配置(如果用的zsh的话,则需要保存到 .zshrc
文件)
alias asciicast2gif='docker run --rm -v $PWD:/data asciinema/asciicast2gif'
以后就可以直接使用命令
asciicast2gif demo.cast demo.gif
这里将录屏生成的json文件demo.json
转成 demo.gif
文件,这时我们可以看下gif的生成效果。
另外在生成动画的时候,也可以指定一些参数,如倍速、缩放比例、高度和宽度,如
asciicast2gif -t solarized-dark -s 2 -S 1 -w 400 -h 500 demo.cast demo.gif
参数
-t
表示颜色方案,必须为 asciinema, tango, solarized-dark, solarized-light, monokai (default: asciinema) 其中的一个,默认方案是 asciinema
-s
表示动画速度,默认为1
-S
图像比例/像素密度(默认值:2)
-w
将端子剪裁到指定的列数(宽度)
-h
将终端剪裁到指定的行数(高度)
常见问题
有时候在转gif的出现失败的情况,如果指定了一些参数的话,可以试着将参数移除试看看。我在用的时候经常出现在指定宽度和高度参数的时候会转换失败,将这两个参数省略则没有问题,怀疑是需要宽高不合理造成的。