VHS でターミナルを録画する
VHS という CLI ツールを見かけて試しに使ってみたら最高すぎたので簡単な紹介です。
VHS を使用すると、例えばこういう GIF を作成したりできます。
CLI ツールのデモ動画を作成する際などに大活躍しそうです。
検証環境
- VHS v0.1.1
前提条件
VHS を使用するには事前に ffmpeg と ttyd のインストールが必要です。
例えば Homebrew を使っている場合は brew install
でインストールすることができます。
$ brew install ffmpeg ttyd
その他のインストール方法については公式ドキュメントをご参照ください。
VHS のインストール
Homebrew や Go など様々なインストール方法が用意されています。
# Homebrew を使う場合
$ brew install charmbracelet/tap/vhs
# Go を使う場合
$ go install github.com/charmbracelet/vhs@latest
その他のインストール方法については公式の README をご参照ください。
VHS の使い方
vhs new <任意の名前>
のように実行することで、 <任意の名前>.tape
という名前でファイルが作成されます。
例えば次のように実行した場合、 example.tape
というファイルが作成されます。
$ vhs new example
Created example.tape
作成された example.tape
の内容は次のようになります。
# VHS documentation
#
# Output:
# Output <path>.gif Create a GIF output at the given <path>
# Output <path>.mp4 Create an MP4 output at the given <path>
# Output <path>.webm Create a WebM output at the given <path>
#
# Settings:
# Set FontSize <number> Set the font size of the terminal
# Set FontFamily <string> Set the font family of the terminal
# Set Height <number> Set the height of the terminal
# Set Width <number> Set the width of the terminal
# Set LetterSpacing <float> Set the font letter spacing (tracking)
# Set LineHeight <float> Set the font line height
# Set Theme <string> Set the theme of the terminal (JSON)
# Set Padding <number> Set the padding of the terminal
# Set Framerate <number> Set the framerate of the recording
# Set PlaybackSpeed <float> Set the playback speed of the recording
#
# Sleep:
# Sleep <time> Sleep for a set amount of <time> in seconds
#
# Type:
# Type[@<time>] "<characters>" Type <characters> into the terminal with a
# <time> delay between each character
#
# Keys:
# Backspace[@<time>] [number] Press the Backspace key
# Down[@<time>] [number] Press the Down key
# Enter[@<time>] [number] Press the Enter key
# Space[@<time>] [number] Press the Space key
# Tab[@<time>] [number] Press the Tab key
# Left[@<time>] [number] Press the Left Arrow key
# Right[@<time>] [number] Press the Right Arrow key
# Up[@<time>] [number] Press the Up Arrow key
# Down[@<time>] [number] Press the Down Arrow key
# Ctrl+<key> Press the Control key + <key> (e.g. Ctrl+C)
#
# Display:
# Hide Hide the subsequent commands from the output
# Show Show the subsequent commands in the output
Output examples/demo.gif
Set FontSize 32
Set Width 1200
Set Height 600
Type "echo 'Welcome to VHS!'" Sleep 500ms Enter
Sleep 5s
作成された .tape
ファイルを vhs
に標準入力から読み込ませることで動画を作成できます。
# 出力先に `examples/` ディレクトリが設定されているので事前に作成しておく
$ mkdir ./examples
# GIF を作成
$ vhs < ./example.tape
実行例
完了すると examples/demo.gif
という名前で次のような GIF が作成されます。
examples/demo.gif
その他
設定について
.tape
ファイルを編集することで様々な設定を記述することができます。
- ファイル形式 ( GIF, MP4, WebM, PNG, テキスト )
- キーの入力速度
- 文字の大きさ、テーマ、ターミナルの高さ・幅など、見た目に関する様々な設定
- 再生速度、フレームレート
- その他色々
詳細については公式の README にわかりやすくまとまっているので、こちらをご参照ください。
公式サンプル
公式の examples/
ディレクトリでは様々な使用例が紹介されていますので、こちらも参考にしてみてください。
GitHub Actions
VHS 用の GitHub Actions も用意されています。
こちらを使うことで、例えばデモ用の GIF を最新に保つなどのことができます。
まとめ
こういうの大好き。
VHS と同じ Charm が作っている gum という CLI ツールの紹介記事も公開しているので、こちらも見てみてください。
Discussion