Asciinema の利用と gif の作成



タイピングの録画

asciinema rec demo.cast

録画を終えるには Ctrl + D を押します。

asciinema upload demo.cast を実行するとアドレスが返されます。そこには Web ページへの 埋め込み方法や 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 に変換する例を以下に示します。2 段階に分けることで最適な色再現が得られます:

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