試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

recordMyDesktopの追加メモ(2009/4/21現在)

recordMyDesktopを使い続けてきて新たに分かったこと・まとめておきたいことをここに書き留めておくことにする。

  1. キャプチャ領域のサイズと位置をGUIから決めたい場合
  2. キャプチャ位置のずれと微調整
  3. OpenGLを使用したアプリケーションのキャプチャについて
  4. 小数部を含むフレームレート指定

キャプチャ領域のサイズと位置をGUIから決めたい場合

画面の中の特定の(ウィンドウではなく)領域をキャプチャしたいとき、gtk-recordMyDesktopqt-recordMyDesktopにある画面の縮小画像の中でドラッグを行うことでもキャプチャ領域を指定できるが、動画の縦横サイズが中途半端になるのでおすすめはできない。
代わりに、キャプチャしたい領域のサイズと同じウィンドウを用意し、その領域の上に移動した上で、ウィンドウ選択ボタンを使用するという方法がある。*1
任意のサイズのウィンドウを用意するのにはGNOMEZenityが便利。「アプリケーションの実行」ダイアログや端末に

zenity --info --width [幅] --height [高さ]

を入力して実行すればOK。

640x480指定で表示したダイアログを縮小したもの

キャプチャ位置のずれと微調整

ウィンドウ選択ボタンを使用すると対象のウィンドウの領域とサイズをもとにキャプチャ領域が設定される。しかし、キャプチャした動画を再生すると、画面の左や上といった端にウィンドウマネージャの装飾が1ピクセルだけ入り、反対の端から1ピクセル抜け落ちる(キャプチャ領域がズレている)といったことが場合によっては起こる。
これを防ぐための方法は分からない*2が、キャプチャをする際には本番の前に必ず一度試しにキャプチャを少しの時間実行してからそれをプレーヤで開いてフルスクリーンで再生するなどしてキャプチャ領域のズレがないかどうかを確認するようにすることにしている。
もしテストした動画にズレがあった場合、ウィンドウ位置の微調整を行う。GNOMEのMetacityウィンドウマネージャを使用している場合は

  1. 装飾部分のコンテキストメニューを開き、マウスポインタをそこから離した後マウスを置く
  2. キーボードの矢印キーで「移動」に選択を移動後EnterするかMを押して、キーボードで移動可能な状態とする
  3. Ctrlを押しながら、ウィンドウマネージャの装飾が見えている方向のキーを押す(1ピクセル単位で移動)

という流れで位置を微調整する。その後再びテストを行い、ウィンドウマネージャ装飾が入っていないことを確認する。装飾が見えているかどうかが分かりにくい場合は外観の設定からウィンドウマネージャ装飾を変更する。

OpenGLを使用したアプリケーションのキャプチャについて

recordMyDesktopは通常X Window System上の特定の範囲を記録するためのXDamageという拡張を使用するのだが、ハードウェア支援を使用したOpenGLのウィンドウは正常に記録されない。Compizのような3Dデスクトップも同様。
OpenGLアプリケーションやCompizのデスクトップをキャプチャしたい場合には「フルショット」のオプション*3を有効にして画面全体の連続キャプチャを内部的に行う必要があり、負荷もかなりかかってしまう。
CPUの処理能力にもよるが、CPU使用率が低めのアプリケーションであれば、それでも高いフレームレートで滑らかにキャプチャすることは可能。一方で重い処理を行うアプリケーションでは厳しいかもしれない。手元の環境のCPUはAthlon64 3500+(シングルコア)で、マルチコアだとまた変わってくるのかもしれないが、確認することは当面は無理。

軽い例として、StepManiaOpenGLを使用しているため、フルショットを有効にしないと正常にキャプチャができないのだが
zoome.jp/kakurasan/diary/15/
にアップロードした動画は滑らか(60fps)にキャプチャできている。「GNU/Linux上のStepManiaにおけるサウンド出力と追加データの配置について」に書いているようにStepManiaの音声はそのままではキャプチャできないため、そのページの追記コメントに書いた方法で後付けしている。
(2010/6/21)glcを用いると音声のキャプチャはできる。
重い例として、openBVEは、(画面サイズの設定にもよるが)キャプチャをしないときには結構滑らかに動くものの、キャプチャを行うと動きの滑らかさが減ってしまう(がカクカクになるほどではない)。30fpsを超えるキャプチャフレームレートを指定しても動画の実質のフレームレートは変わらないどころかキャプチャの処理が重くなってむしろ無駄に遅くなる原因ともなるため、今後は30fpsでキャプチャすることにした。
(2009/9/3)OpenGLに特化したキャプチャツールについてを「OpenGLアプリケーションが快適にキャプチャできるglcについて(概要/インストール/Mandriva Linux向けパッケージ)」で扱った。
(2015/1/7)zoomeの動画はサイト閉鎖につき参照できない。

小数部を含むフレームレート指定

gtk-recordMyDesktopによるキャプチャ時のフレームレート指定では整数による指定しかできないが、追加オプション指定で--fpsオプションを手動で付けることにより、「59.94」のような小数部を含んだキャプチャフレームレート指定ができる。ところが、そのようにしてキャプチャした動画を再生すると映像が突然飛んでしまう現象が複数回確認されたため、おすすめはできない。

使用したバージョン:

  • recordMyDesktop 0.3.8
  • gtk-recordMyDesktop 0.3.8
  • Metacity 2.24.0

*1:gtk-recordMyDesktopやqt-recordMyDesktopでウィンドウ選択ができない件とJACK使用時にポートが一覧に出ない件について、およびそれらの対処」で書いたように、ウィンドウ選択ができない場合はxwininfoコマンド(同名のパッケージ)が入っていないことがありうるのでそれをインストールする

*2:ずれることがあるのはウィンドウ情報を取得するxwininfoコマンドの仕様かもしれない

*3:recordmydesktopコマンドを直接実行する場合は--full-shotsオプション