Ubuntu12.10で gif screencastを作成する

Macだといろいろ方法があるようなんですが、Linux環境ではわからなかったので
調べました。それについてのメモです。環境は Ubuntu 12.10とします。


開発中のパッケージも含めるといろいろあるようなんですが、そうでなく
普通にインストールできるパッケージを使った方法になります。

パッケージのインストール

必要となるパッケージは

になります。それを初めにインストールしてください。

  % sudo aptitude install gtk-recordmydesktop mplayer imagemagick

screencastの撮影

recordmydesktopを使って screencastを撮影します。


特定のウインドウだけ撮影するときは、「ウインドウを選択」で該当の
ウインドウを選択します。全体を撮る場合は不要です。あとは「録音」
ボタンを押します(recordの訳なんでしょうけど、ちゃんと動画が撮れます)。


終了はパネルにパネルに出現したボタンを押すことで行えます。
動画は Ogg形式で出力されます。

動画を jpegに変換

まず mplayerを使って Ogg形式から jpegに変換します。

  % mplayer -ao null 入力動画ファイル -vo jpeg:outdir=出力ディレクトリ


これで出力ディレクトリに jpeg画像が大量に出力されます。
自明ですが、jpegファイルの数は動画の長さに比例します。

jpegファイル群を gifに変換

Imagemagickの convertコマンドを使って jpegファイル群を gifに変換します。

  % convert 出力ディレクトリ/*.jpg screencast.gif

これで gifができます。

gifファイルのサイズを減らす

jpegファイル群を単純に gifに変換するとファイルサイズがとても大きくなって
しまいます。それで問題なければいいのですが、場合によりそれでは困るので、
convertコマンドでいくらか画質を落とし、サイズを減らします。それには
以下のコマンドを使います。

  % convert screencast.gif -fuzz 10% -layers Optimize optimized.gif

"-fuzz"の後のパーセンテージは大きくするほど、画質が劣化します。5%でも
かなりファイルサイズが小さくなるので、基本的には低めの数字で良いでしょう。


下記の gifファイルの場合のサイズを示します。

% du -sh *.gif
7.5M	output.gif                          # original
556K	quickrun-replace-region-demo.gif    # fuzz 5%
236K	quickrun-replace-region-demo2.gif   # fuzz 10%

完成

これで gif screencastができました。