ゲームプレイをGLCで録画する

 筆者ならずとも、ゲームファンなら誰でもあの栄光の瞬間を――あのマルチフラグショットを、S字カーブでのスーパードリフトを――仲間と共有したいと思うはずだ。だが、フリーやオープンソースのゲームで、ゲームプレイを記録してくれるものは少ない。まして、ゲームから他へのエクスポートまで面倒を見てくれるものはほとんどない。そこで、 GLC の出番となる。このオーディオ/ビデオキャプチャツールはさまざまな方法での記録が可能であるほか、ブログやビデオ共有Webサイトへアップロードするためのエンコード機能まである。

 GLCには、詳細なインストール解説文書がある。必要なビデオ/オーディオライブラリを取得しておいてビルドスクリプトを実行すれば、GLCのダウンロード、コンパイル、インストールが実行される。このスクリプトには、最新バージョンをインストールするオプションもあるが、このバージョンは不安定かもしれず、クラッシュしたり動かなかったりする危険がある。最新の安定バージョンを使うのがよかろう。

 ソフトウェアのインストールがすめば、すぐにでもGLC経由でゲームを実行し、ビデオキャプチャを開始できる。たとえば、glc-capture vdriftとすれば、 VDrift (ドリフトレースのシミュレーションゲーム)が正常に起動し、いつもどおりゲームを楽しみながら、これといった瞬間のプレイを記録できる。GLCでゲーム中にプレイを記録するには、Shift-F8を押す。これで録音・録画が開始される。停止するには、再度Shift-F8を押す。

 ビデオキャプチャ時にはGLCが大量のデータをディスクに書き込むため、ディスクアクセスが頻発する。コンピュータの物理的リソース(プロセッサ、メモリ、グラフィックカード)に余裕がないと、ゲームプレイがぎくしゃくすることもある。たとえば、筆者の2.0GHz E4400デュアルコアマシン(1GBのRAM、オンボードグラフィックス)ではストレスを感じる。1.8GHz E6300デュアルコアマシン(2GBのRAM、オンボードGMA X3000グラフィックス)のほうが、GLCのパフォーマンスはよかった。

 GLCは、デフォルトでは現在のプロセスIDの名前(たとえば、pid-6338.glcなど)でビデオストリームを記録し、保存する。ゲームプレイ中に何度か記録ホットキーを押すと、キャプチャされたビデオが同じストリームに順次付加されていく。このストリーム命名方式がいやなら、glc-captureを呼ぶときに--outオプションを付けて、好みのファイル名を指定してもよい。

 GLCでキャプチャされるビデオは量的に膨大となる(2分間のビデオで450MBほど)。キャプチャサイズを減らす工夫として、たとえば--no-soundオプションを使うと、オーディオなしの録画ができる。また、--fpsオプションではフレームキャプチャ速度を加減し、ビデオストリームのサイズを制御できる。GLCのデフォルトは30fpsのビデオキャプチャだが、それより遅い速度でも速い速度でも指定できる。

 GLCは、ビデオストリームの圧縮に QuickLZ を使用する。圧縮の有無は、--compressionオプションで指定する。LZO圧縮アルゴリズムを使用するなら--compression=lzo、圧縮しないなら--compression=noneとする。ビデオをキャプチャするとき、GLCはビデオをフレームバッファのRGB色空間からYV12 ITU-R BT.601色空間に変換する。GLC資料によると、この後者の色空間を使うことでビデオサイズが半分に減るうえ、圧縮率も向上するらしい。ただ、圧縮によってキャプチャプロセスのオーバーヘッドが増え、ハードウェアの負担が大きくなる。--colorspace=bgrオプションを指定すれば、ビデオがフレームバッファから直接キャプチャされ、占有するディスクスペースは大きくなるものの、ゲームプレイはスムーズになる。

 GLCで記録したビデオストリームは、glc-playユーティリティで再生できる。ビデオの詳細を知るには、glc-play [stream file] -i VERBOSITY-LEVEL コマンドを使う。ここで、VERBOSITY-LEVELは1から6までの値で、詳しさの程度を表す(値が大きいほど詳しい)。たとえば、glc-play s_bend_drift -i 2なら、次の結果が得られる。

 
[ 0.00s] audio stream format message stream id = 1 format = GLC_AUDIO_S16_LE flags = GLC_AUDIO_INTERLEAVED rate = 44100 channels = 2 [ 0.00s] video stream format message stream id = 1 format = GLC_VIDEO_YCBCR_420JPEG flags = width = 800 height = 600 [ 7.74s] end of stream video stream 1 frames = 64 fps = 8.27 bytes = 43.95 MiB bps = 463 B audio stream 1 packets = 690 pps = 89.13 bytes = 1.35 MiB bps = 9 B

 GLCには、ビデオをMP4にエンコードするためのスクリプトが付随する。glc/scripts/ディレクトリ(最初にGLCインストールスクリプトを実行したディレクトリ)にあるはずだが、オンラインでも取得できる。このスクリプトでGLCストリームのビデオ/オーディオビットをエンコードするには、 MEncoder LAME が必要となる。これをインストールしておいて./encode.sh [stream file] -o MyGameVid.mp4とすれば、持ち運び可能なMP4ファイルが得られる。サイズは、もとのストリームファイルよりかなり小さい。筆者の場合、37MBのGLCファイルが2MBのMP4ファイル、450MBのGLCファイルが45MBのMP4ファイルになった。

 GLCは小さいながら、栄光の瞬間を何度でも味わい直したいというゲームマニアには必須のツールと言えよう。

Linux.com 原文