Captty - ターミナル録画ツール

ターミナルを録画するツールにはttyrecがありますが、Partty!.orgではCapttyというツールを開発しました。Capttyはttyrecと比べて、データを圧縮するウィンドウサイズを保存するという利点があります。


CUIの操作画面は、普通の動画と比べればサイズは小さいですが、塵も積もれば山となり、長時間使っていると結構な大きさのデータ量になります。特に画面をスクロールしたり、vimやscreenなどを使って画面を分割して操作していたりすると、サイズがどんどん増えます。
しかしデータのほとんどがテキストなので、エントロピーが小さく、かなり圧縮が効きます。普通にdeflateで圧縮するだけで、ざっと10%くらいになります(90%減!)(もちろんデータによって違いますが)
というわけで、Capttyはデータを圧縮して保存します。保存するファイルのデータ形式自体が圧縮を考慮して設計してあります。


それから、ttyrecはウィンドウサイズ(ターミナルの縦横の文字数)を保存してくれないので、再生するときのウィンドウサイズが録画したときと異なっていると、表示が崩れてしまいます。Capttyはウィンドウサイズも保存しているので、ターミナルの大きさを自動的に調節してくれます*1この録画データのように、途中でウィンドウサイズが変わっても追随します。


Capttyは最初はコマンドラインツールとして実装したのですが、プレイヤーをFlexにも移植してみました。再生処理がFlex内で完結しているので、サーバーに負荷がかからないのがポイントです。録画データをHTTPでサーバーからダウンロードしたら、もうサーバーとは通信しません。


Flex Capttyプレイヤーは、インターフェイスでちょっと挑戦してみました。再生している画面をクリックすると、操作パネルが もやっ と浮き出てきて、マウスジェスチャの要領で上下左右にマウスを動かすと、巻き戻しや早送りができるというものです*2。「もやっ」というようなエフェクトが簡単に使えるのはFlexのいいところですねー。
ブログに貼り付けられた録画データでも もやっ とできるので、試してみてください。


コマンドライン版Capttyのデモ:

http://www.partty.org/session/captty-demo/2008/03/13/02/54/23


コマンドライン版のCapttyはPartty!.orgソフトウェアに入っています。どうぞご利用ください。

*1:プログラムから大きさが変えられるターミナルエミュレータが必要です。しかし、実はその機能をサポートしたターミナルエミュレータはほとんど無いという悲しい事実が…。Partty!.orgではターミナルエミュレータも独自開発なので大丈夫です。

*2:コマンドライン版と同じようにキーボードで操作することもできます。g:先頭に戻る、h:1ブロック戻る、j:再生速度ダウン、k:再生速度アップ、l:1ブロック進む、;:一時停止/再生