アニメーションをGIFファイルとして録画(Ubuntu)


2013年 01月 20日

前回、GHC単独でアニメーションが動くところまでやった。
しかし、おおいなる問題があったのだ。

それは、こんな風に動くのだと言いながら、示したのは静止画だったのだ。
ここは何とか、実際にどのように動くのかを見せねば良くないだろう。

1つの方法はHaskellが直接動くようにして見せることだが、それは大掛かり過ぎる。
もっと、どこからでも、手軽に見える、確認できるようにしたい。
ということで、動いている動画を、アニメーションGIFというファイル形式で録画して見せることにしよう。
アニメーションGIFなら、ほとんどのブラウザで見えるはずだ。

動画をどうやったら録画できるのだろうか、勉強しなくちゃいけない。

ということで、ちょっと調べた。今回は、このあたりの話をする。

使っているパソコンは、Ubuntu/Linuxなのだ。ここには膨大なフリーソフトがつまっている。
何かきっとあるだろう。
実際、いくつかあったのだが、極めて安直にウィンドウの録画ができそうなのを調べたら、

Making a GIF screencast が出てきた。byzanzというソフトがUbuntuにはあり、GIFファイルを吐き出してくれる。ピッタシ!

インストールは、Synapticパッケージマネージャでやったので、説明は省略。ちょっとツンツンしただけだ。

fuji$ byzanz-record --help
Usage:
  byzanz-record [OPTION...] record your current desktop session

Help Options:
  -?, --help               Show help options
  --help-all               Show all help options
  --help-gtk               Show GTK+ Options

Application Options:
  -d, --duration=SECS      Duration of animation (default: 10 seconds)
  --delay=SECS             Delay before start (default: 1 second)
  -l, --loop               Let the animation loop
  -c, --cursor             Record mouse cursor
  -x, --x=PIXEL            X coordinate of rectangle to record
  -y, --y=PIXEL            Y coordinate of rectangle to record
  -w, --width=PIXEL        Width of recording rectangle
  -h, --height=PIXEL       Height of recording rectangle
  -v, --verbose            Be verbose
  --display=DISPLAY        X display to use

ということで早速録画しようとしたのだが、全画面を録画するのは良いのだが、指定したウィンドウだけを録画しようとしたら、録画するウィンドウの位置を指定しないといけないのだった。

ということで、今度は、xwininfo を起動し、Haskell/Glossのアニメーションウィンドウをクリックし、配置を確認した。

fuji$ xwininfo 

xwininfo: Please select the window about which you
          would like information by clicking the
          mouse in that window.

xwininfo: Window id: 0x2ebe5b8 (has no name)

  Absolute upper-left X:  10
  Absolute upper-left Y:  10
  Relative upper-left X:  10
  Relative upper-left Y:  10
  Width: 246
  Height: 266
  Depth: 0
  Visual: 0x21
  ..................以下省略

ということで、左上隅が (10,10)で、246×266の部分を録画すればよいことがわかった。

fuji$ byzanz-record -d 60 --delay=0 -x 20 -y 10 -w 246 -h 266  byzanz-record-sample.gif

とやると、リターンキーを押した直後から60秒間録画され、最後に指定したファイルにアニメーションGIFファイルが作られる。

今回試しにつくったのがこれだ。サイズは、300KBと、動きが単純なこともあり、たいして大きくない。

これで、作られたアニメーションがどんなものか見せることができるようになった。

ということで、今日はここまで。