使用 Asciinema 并创建 gif



录制键入过程

asciinema rec demo.cast

录制完成后按 Ctrl + D。

asciinema upload demo.cast 会返回一个地址——访问该地址即可了解如何将录制内容 嵌入到网页中,或下载为 gif。

可以在页面中加入 data-autoplay="true" data-loop="true"。


脚本化录制

可以使用 asciinema-rec_script 脚本来录制脚本的执行过程。

请记得先加载运行脚本所需的环境。 目前 asciinema-rec_script 不支持通过 ssh 登录到远程主机 并在其上运行命令。

asciinema-rec_script script_name.sh


Agg:从 .cast 到 gif

请确保:

agg --theme asciinema --font-size 50 --cols 132 --rows 22 --speed 2  ifarm.cast ifarm.gif

Note

截至 2025 年 11 月,asciinema 已是 v3,但 agg 仅支持 v2。将 v3 转换为 v2 的方法:
asciinema convert -f asciicast-v2 a.cast a-v2.cast


ffmpeg:从 .mov 到 gif

下面是一个将 mov 文件转换为 gif 的示例。这两个步骤可确保获得最佳色彩:

ffmpeg -i input.mov -vf "fps=15,scale=800:-1:flags=lanczos,palettegen" -y palette.png
ffmpeg -i input.mov -i palette.png -lavfi "fps=15,scale=800:-1:flags=lanczos[x];[x][1:v]paletteuse" -loop 0 output.gif

其中:


更多 gif 小技巧

拼接 3 个 gif:


W=860
H=600
FPS=15

ffmpeg -i a.gif -i b.gif -i c.gif \
  -filter_complex "\
[0:v]fps=${FPS},scale=${W}:${H}:force_original_aspect_ratio=decrease,pad=${W}:${H}:(ow-iw)/2:(oh-ih)/2[v0]; \
[1:v]fps=${FPS},scale=${W}:${H}:force_original_aspect_ratio=decrease,pad=${W}:${H}:(ow-iw)/2:(oh-ih)/2[v1]; \
[2:v]fps=${FPS},scale=${W}:${H}:force_original_aspect_ratio=decrease,pad=${W}:${H}:(ow-iw)/2:(oh-ih)/2[v2]; \
[v0][v1][v2]concat=n=3:v=1:a=0,scale=${W}:${H},split[x][y]; \
[x]palettegen=reserve_transparent=1[p]; \
[y][p]paletteuse=dither=bayer" \
  -loop 0 out.gif

其中:


确保 gif 无限循环:

ffmpeg -i in.gif \
  -filter_complex "fps=15,split[x][z];[x]palettegen[p];[z][p]paletteuse" \
  -loop 0 out.gif