recordMyDesktop: Linuxのデスクトップ画面を動画キャプチャする

今日は、表題の通り、Linuxのデスクトップ画面をキャプチャするためのソフトであるrecordMyDesktop を紹介します。

何かのアプリの操作解説だとか、デモンストレーションだとかいった用途にしか使い道の無いソフトなので、あまり需要は無いかもしれませんが、いざ使おうと思ったときには意外と困る事が多いので、使う可能性のある人は予めインストールしておいたほうが良いかもしれません。

同種のソフトは幾つかありますが、私が試した限りでは最も安定していてコマ落ちが少なかったのでrecordMyDesktopをおすすめします。このソフトは、基本的に前のフレームからの差分を元に必要な部分だけを記録することで負荷を低減しているので、画面全体が激しく動く物でない限り非常に低負荷で動作します。

以下は、簡単な使い方の紹介です。

インストール

Ubuntuの場合、パッケージが universe リポジトリに入っているので、apt-getなりaptitudeなりでインストールしてください。

コンソール版単体の物と、GTKによるGUIフロントエンドがあります。

$ sudo apt-get install recordmydesktop gtk-recordmydesktop

手動でビルドする場合は ogg や theora-vorbis のライブラリが必要となるので若干面倒かもしれません。 (まぁ、それでも、動画を扱うアプリとしては依存が少ない方ではありますが。)

CUI版の使いかた

コマンドラインで録画するファイル名を渡して起動すれば、デスクトップ全体をキャプチャできます。

$ recordmydesktop output.ogg
X:0   Y:0    Width:2304    Height:1024
Adjusted recording window is set to:
X:0   Y:0    Width:2304    Height:1024
Your window manager appears to be Metacity

Initializing...
Buffer size adjusted to 4096 from 4096 frames.
Opened PCM device hw:0,0
Recording on device hw:0,0 is set to:
2 channels at 22050Hz
Capturing!

この状態でキャプチャは始まっているので、あとは録画したいアプリ操作などを行ない、終わったら、recordMyDesktop を Ctrl+C で停止させましょう。そうすると、その間に記録された画像データをまとめて圧縮され、指定したファイルにogg動画として出力されます。

Saved 994 frames in a total of 993 requests
Shutting down.....
Encoding started!
This may take several minutes.
Pressing Ctrl-C will cancel the procedure (resuming will not be possible, but
any portion of the video, which is already encoded won't be deleted).
Please wait...
[100%] 
Encoding finished!
Wait a moment please...
   
Done.
Written 9365081 bytes
(8294177 of which were video data and 1070904 audio data)

Cleanning up cache...
Done!!!
Goodbye!

起動時にオプションを与えることで色々な指定をすることもできます。例えば……

$ recordmydesktop --no-sound --no-cursor -x 10 -y 10 -width 640 -height 480 
(音無し、マウスカーソル無し、
左端10ドットと上端10ドットを除いて左上の640x480の部分をキャプチャ)

$ recordmydesktop -width 320 -height 240 --follow-mouse -dummy-cursor black
(キャプチャサイズは 320x240 で、
常にマウスカーソルが画面の中央に映るようにキャプチャ位置を自動スクロールする。
また、見易いように、普通のマウスカーソルのかわりに、黒いダミーカーソルを表示。)

$ recordmydesktop -windowid  0x3a0001f
(Window ID が 0x3a0001f のWindowをキャプチャ。
なお、Window ID は xwininfo というコマンドで取得できます。)

GUI版のつかいかた

GUI版のgtk-recordMyDesktopの場合でも、基本的に同じことができます。

パッケージでインストールした場合、GNOMEの「アプリケーション」メニューの「サウンドとビデオ」カテゴリの中にインストールされていますので、それを選択すれば起動します。

録画範囲の設定は、表示されている画面のサムネイルをドラッグして指定できます。もしくは、「ウインドー選択」ボタンを押してから、キャプチャしたいウインドウをクリックすることでも指定できます。

CUI版の例で示したような特殊な機能は「設定」ボタンで出るダイアログから設定できるはずです。

録画ボタンを押すと、gtk-recordMyDesktopウインドウが消え、録画が開始されます。録画中は、通知エリア(デフォルトでは画面右上にある、各種の通知アイコンがでるところ)に、見慣れない灰色の四角のアイコンが出ているかと思います。そのアイコンをクリックすれば録画を終了できます。(また、アイコンを右クリックすることで録画を一時停止することも出来ます。)

動画上に録画の痕跡を残さない方法

GUI版の場合、通知エリアにアイコンが出てしまうので、gtk-recordMyDesktopで録画したことが判ってしまいます。CUI版を普通に使う場合でも、recordMyDesktopを実行している端末は開きっぱなしにしておかなければならないので、ウィンドウ一覧などに痕跡が残ります。残っていたところで、別に何の問題も無いんですが、今日はこの痕跡を残さないテクニックもついでに紹介しておきましょう。

まずは、gnome-terminal などの端末を立ち上げ、CUI版のrecordMyDesktopで録画を開始します。ただし、その際には nohup 経由で実行します。たとえばこんなかんじです。

$ nohup recordmydesktop -width 400 -height 300 out.ogg

実行開始されたら端末は閉じてしまって構いません。裏では録画が続いていますので、普通に撮りたい動作を行なってください。

終わったら、再度端末を開いて、以下のように打ち込みます。

$ killall recordmydesktop

これで、録画が停止し、動画のエンコードが始まります。途中経過は画面には出ませんが、nohupを実行したディレクトリに生成されている nohup.out というテキストファイルに随時出力されますので、適当な時間を置いてからそのファイルを開いてみて、処理が終わっているかどうか確認してください。

あとは、出来上っがった動画の頭とお尻の、端末を開いて作業している部分を消せば、録画中の痕跡は完全に消せます。

できあがった動画の扱い

出力される動画は Ogg 形式の Theora-Vorbis 動画になります。Linuxの動画編集ソフトは、大抵の場合この形式にも対応してますので、お好きな動画編集ソフトにつっこんで編集してやってください。

もし運悪くOgg非対応のソフトがお気に入りだった場合は、ffmpegなどで一旦適当な形式に変換してから読み込む必要があるでしょう。


というわけで、次回更新は動画編集ソフトの紹介をしようかと思います。