「test」の編集履歴(バックアップ)一覧に戻る

test - (2009/06/05 (金) 20:19:21) のソース

ここではアマレココを使用したゲームのキャプチャー方法を説明する。

アマレココは独自の非可逆圧縮形式であるAMVエンコーダを利用できるデスクトップキャプチャ。
アマレココ2系に搭載されていたAMVエンコーダは画質面で不満があったが、現在のAMV3コーデックは画質が飛躍的に向上している。
以前なら画質を重視する場合、高画質チューニングのAMV2(高画質チューニング版AMVコーデック)か、UtVideo等の可逆形式を使おうと思ったところだったが、現在のAMVコーデックは実用上なんら問題ないレベルの画質と言える。

とはいえ、実際のところDirectXで動作するゲームのキャプチャを行うなら、DxtoryやFraps等のDirectX/OpenGLアプリケーション専用のキャプチャを使うのが望ましい。
アマレココのようなデスクトップキャプチャでゲームのキャプチャを行う場合、基本的にはウインドウモードでしかキャプチャを行えない&footnote(DirectDraw7対応ゲームに関してはプラグインを利用することでフルスクリーンでもキャプチャ可能)・負荷が大きい&footnote(画像取り込みについてのこと。Dxtoryなどは映像のデータをサーフェイスメモリから直接取り込むため、未圧縮であればCPUへの負荷は極めて低い。ただ、圧縮に関してアマレココはAMVという低負荷・高速なエンコーダを有するため、Dxtoryなどで他の圧縮形式を使いキャプチャするよりも軽いケースもある)
…等のデメリットがある。
しかし、デスクトップキャプチャであるが故に、他のアプリケーションウインドウを同時にキャプチャできるというメリットもある。
使用例として以前作成したゲームの操作説明を行う動画を貼っておく。
&nicovideo(http://www.nicovideo.jp/watch/sm5745528){340,120}
これはコントローラのプロパティを表示し、それを含めてキャプチャを行った動画。
含めてといっても解像度の都合上こんな縮尺でキャプチャはできないので、ゲームのウインドウの隣にコントローラのウインドウを並べて横長の画面をキャプチャした後、トリミング→合成…という手順を経ている。
他にも、時計を一緒に録画することで経過時間を正確に計る時などには使えるだろう。

#contents()

*必要なソフト
-アマレココ本体 - ver3.01からAMVコーデックを同梱しなくなった。下記AMV3コーデックを別途ダウンロード、インストールすること
-AMV3 video codec

-公式サイト -  [[http://amamaman.hp.infoseek.co.jp/]]
-アマレココダウンロード(vector) - [[http://www.vector.co.jp/soft/winnt/art/se439053.html]]
-AMVコーデックダウンロード(vector) - [[http://www.vector.co.jp/soft/winnt/art/se460917.html]] (シェアウェアと表示されているがアマレココで使う場合のみ試用制限を解除できるので気にしなくてよい)

*準備
+アマレココのインストール。lzhの圧縮ファイルを適当な場所に展開する
+AMV2MT/AMV3 ビデオコーデックのインストール。インストーラに従い導入する
+AmaRecCo.exeを実行してアマレココを起動

-以下は詳細設定の説明となる。ファイル>ルーキーモード のチェックを外すと詳細設定モードになる。
-表示>プレビュー で両方表示に設定しておくと見やすい。好みで選択。
-表示>ステータスバー は個人的にはフレームレートがいいと思う。fpsが落ち込んだら何かの負荷が高すぎてうまくキャプチャできていないということ。

*取扱説明書
アマレココをインストールしたフォルダの中にある、取扱説明書.htmを開けば見れる。
基本的な使用方法から設定方法まで詳しく説明されているので、わからないことがあったら一読するとよい。
また、各設定項目にポインタを当てればツールチップによる説明がポップアップするので活用すること。

*各種設定
設定項目で重要なものに関してのみ簡単な説明をする。
基本的には取扱説明書、ツールチップの説明をよく読むこと。
#image(http://www26.atwiki.jp/kmgr/pub/amarecco/settei.png,width=509,height=382,title=設定画面,http://www26.atwiki.jp/kmgr/pub/amarecco/settei.png)

**全般
-最大ファイルサイズ:特別理由がなければ100GB(100000MB)にしておけばいい。使用しているファイルシステムがFAT32なら4GB以下にしておくこと。
-バッファサイズ:録画対象のアプリケーションの動作に問題がない範囲で、メモリ容量と相談して調整する。高解像度の動画を撮るならできるだけ余裕を持ちたい。
-書き込みサイズ:可逆圧縮や未圧縮を使うなら大きめの方がパフォーマンスがいいかもしれない。環境に合わせて調整する。
-ホットキー:初期設定のCtrl+Z/X/A/Sは他ソフトでもよくホットキーとして使われているので、変更したほうが都合がいいこともある。

**各プロファイル設定
***ビデオ
-フレームレート:ゲームを滑らかに録画するなら60fps以上にするのが望ましい。高fpsにすればするほど画像取り込み、圧縮の負荷は高まる。PCのスペックに合わせて調整する。
***ビデオ圧縮
-コーデック:AMV3コーデック以外の可逆圧縮や、mpeg4系の非可逆圧縮形式を使いたい場合に利用する
-AMV3コーデック:アマレココ標準の圧縮形式。優秀なコーデックなので特に理由がない限りこれを選択しておけばよい。
 録画時に挿入されるAMVロゴの消し方、設定については[[後述>#amv3]]する。
***取り込み範囲/ウインドウ指定
範囲指定は「範囲表示」で取り込み枠を表示してそれを用いて設定したほうが楽。
ウインドウ指定ではデスクトップに展開中のウインドウを選択することができる。
尚、指定範囲の解像度が8の倍数でない場合、取り込み後の映像は黒縁が付加されて自動的に8の倍数になる(多くのコーデックは4ないし8の倍数解像度でないとエンコードできないためと思われる)
取り込み枠右クリックで表示される「規定のサイズ」は全て8の倍数の解像度。
一部のゲーム等ではチート対策としてウインドウ、プロセスの隠蔽がされており選択できないことがある。
***画像縮小
取り込んだ画像を縮小することでエンコードとHDD転送の負荷を下げる。
AMV3コーデックで1/2解像度にする場合は、エンコーダの設定で「ハーフサイズ」にチェックしたほうが高速に処理できる。
他のコーデックを使う場合、縮小サイズを指定する場合はこの設定を使う。処理モードはSSE対応のCPUを使っているならSSE、1/2の場合ハーフSSEを使う。SSEの方が高速、高精度。
低スペックPCで負荷を下げたい場合や、ゲームを高解像度でプレイした時エンコードやHDD転送がボトルネックになって録画fpsが上がらない場合に利用する。
画質は落ちるので、フレームレート・解像度・圧縮形式などの兼ね合いを考慮して調整する。
***タイムスタンプ
キャプチャ映像にタイムスタンプを挿入する。キャプチャ状況を示す顔文字と、日時とフレーム数が表示される。
キャプチャ成功した場合顔文字が(^-^)になり、フレームの取りこぼしがあると(>_<)になる。
わかりやすいのでテスト録画をする際に利用したい。
***オーディオ
音もキャプチャしたい場合は「録音」にチェックする。
環境によって設定は大きく変わるので、詳しくは取説の「5.録音について」を熟読のこと。
筆者の環境(USBオーディオデバイスを使用)では、DirectSoundCaptureでないと録音できなかった。
オンボードサウンドのステレオミキサーを利用する人が多いと思われるが、ミキサーの音量はかなり低め(初期設定は低くなっているはず)にしておかないと音が割れる。
何度かテスト録音してみて調整する。audacityやレベルメーター表示ソフトなどで音量をチェックしながら調整するといいかもしれない。
-[[アマレココの録音設定について]]
***録画タイプ
重視したい方を選ぶ。

**取り込み範囲設定
メイン画面のストップボタンの隣にある、取り込み範囲アイコンを押すことで取り込み枠が表示される。
枠を右クリックすることで、取り込み範囲を規定のサイズに変更、フレームレートの変更などが行える。
また、枠の左上あたりのアイコンをつまんで枠をアプリケーションウインドウに合わせると、自動的にウインドウサイズ(またはクライアントサイズ)に合わせられる。

**&anchor(amv3){AMV3コーデックの設定}
***AMVロゴを消す
上部メニューの「レジスト」を選択し、試用版レジストキーをテキストボックスに貼り付け、登録ボタンを押す。
レジストキーはアマレココ3.01以降に同梱のreadme_jp.txtに「AMV3ビデオコーデック用アマレココ試用版レジストキー:」として記載してある。
アマレココ以外のアプリケーションで使用する場合もロゴを消したい場合は、シェアウェアとして購入する。
***圧縮
S3の標準でも実用上十分な画質だが、画質を重視したいなら容量は増えるがS2を利用する。テスト録画でチェックしてみるといい。
「ハーフサイズ」にチェックすることで映像サイズが半分の解像度(4分の1サイズ)になる。負荷が激減するため、高解像度でフレームレートが出ない場合チェックする。
ただし当然ながら画質は悪化する。多少のフレーム取りこぼし程度なら解像度や録画fpsを落とした方がよい結果になる。
***マルチスレッド
シングルコア、デュアルコアのCPUなら1のままでいい。全コアをアマレココに割り振ってしまうと録画対象のアプリケーションの動作に使われるリソースが減ってしまう。
3コア以上あるなら録画対象アプリケーションの動作との兼ね合いを考慮して調整する。
***入力フォーマット
特に理由がなければ変更の必要はない
***出力フォーマット
特に理由がなければ変更の必要はない
最終的に編集する際使うアプリケーションなどに合わせてYUY2,YV12なども選択する。
***プロファイル
上部メニューのプロファイルをクリックすることでプロファイルを追加、編集できる。
よく使う設定が複数あるならプロファイルを作っておけば変更が楽になる。
オートプロファイルについてはよくわからない。

*ゲームキャプチャ手順
+アマレココとゲームを起動する。
+各種設定を行う
+ウインドウを指定する
+録画スタート

**キャプチャ手順動画
アマレココの使用法についての動画は、アマレココ公式サイトでもいくつか紹介されているのでそちらも参照のこと。
&nicovideo(http://www.nicovideo.jp/watch/sm5747780){340,120}

キャプチャに使用したPCのスペックは
AthlonX2 4800+/DDR2-800 4GB/RADEON HD4830
DMC4ベンチの設定は
800*450/MSAA x4/その他HIGH設定

元はMHFをサンプルとして使う予定だったが、一度終了したらnProが邪魔して起動できなくなってしまったため手元にあったDMC4ベンチを使用した。
MHF、先の例で示したアラド戦記も同様の手順で録画できる。

*完成
#zoome{<script type="text/javascript" src="http://www.zoome.jp/swfblog?param=de3d1686fffdf7f1d95510227ae5ae3c72836cd15f5624816423656ca0488279375c290518efc7d80a290d02b18e2a29e6a7826e3c"></script>}
アップロード用にエンコしたため細部が潰れてしまっているが、実際にはもっと綺麗にキャプチャできている。
以下にAMV3コーデックで圧縮されたキャプチャ映像のScreenShotを掲載しておく(クリックで拡大)
#image(http://www26.atwiki.jp/kmgr/pub/amarecco/dmc4.png,width=512,height=288,title=DMC4ベンチ,http://www26.atwiki.jp/kmgr/pub/amarecco/dmc4.png)

*高画質キャプチャのために
高解像度、高フレームレート、未圧縮…でキャプチャするのが最善だが、実際にはPCのスペックの関係上そうもいかないことが多い。
自分のスペックに合わせてできるだけ高画質でキャプチャするための設定方法を説明する。

まず最初に、ボトルネックがCPUかHDDのどちらなのかを判断する。
アマレココにはAMVという高速、高圧縮エンコーダがあるので、多くの場合はCPUがボトルネックになるだろう(AMVの負荷が高いという意味でなく、HDD転送に余裕があるという意味)

徐々に取り込み解像度を大きくしながらデスクトップをキャプチャして、設定フレームレートでちゃんとキャプチャできているかチェックしていくといい。
ある程度まで大きくすると設定したフレームレートを下回るので、その解像度未満が限界の解像度となる。
AthlonX2 4800+/DDR2 4GBという環境の場合、60fps/AMV(S3)の設定でテストしていくと1280*1024の段階で45fps前後となった。
1280*768では60fpsで安定。この場合60fpsキャプチャの限界は1280*768といったところになるだろう。
しかし、AMVの設定をS1(高速)にすることで1280*1024でも60fpsを維持できた。低負荷だが低圧縮(ファイルサイズ大)のS1でも問題ない…つまりこの状態ではHDD転送速度には余裕があるということだ。
HDD転送に余裕があるので、さらに低負荷の未圧縮などを選択すればCPU負荷は減る。
しかし今度はHDD転送速度がボトルネックになり設定フレームレートを維持できないので、CPU負荷を減らしても結局解像度を上げることはできなかった。
結果としてこの環境での高画質キャプ設定は、60fps、1280*1024、AMV(S1)が最善ということになるだろう。
但し、ゲームをプレイするとそっちにCPUが使われるので、実際の限界はさらに下がると考えたほうがいい。
実際のゲームで高負荷時になった際フレームレートが落ちることも考えられるので、ここからさらに実際のゲームプレイで何度かテストを行い、最終的な設定を決めるのがいいだろう。

※PhenomII X4 955BE(3.0GHz)環境&footnote(定格は3.2GHzだが動画エンコード時以外はそんなに必要ないので、普段は3GHzまでしか上がらないようにしてある)でのキャプチャ限界
解像度1920*1200、フレームレート60fpsの設定でも問題なくキャプチャが行えた。
AMV3の設定はS3、マルチスレッド設定でエンコードに2コア割り当て。尚、マルチスレッドを1コア設定に変更すると55fps程度になった。
PhenomII X3/X4の2.8GHz以上&footnote(使ったことがないので断定しかねるが、Core2Quad/i7でも同様だろう。また、Core2Duoでも3GHz以上のモデルなら実用上困らないレベルの解像度で60fpsキャプチャが行えると思われる)なら、キャプチャに関してCPUのボトルネックを気にする必要はないと思われる。

以下に各設定項目の設定方法を記す

**CPU処理速度がボトルネックの場合
:解像度|取り込み範囲を大きくすればするほど負荷(画像取り込み処理、それをエンコードする処理)が増大する。
他を低負荷設定にしたとしても、どこかに処理できる限界の解像度がある。最初にその解像度を見つけるといい。
テストする時は比較的負荷の大きい設定から試していって、限界がきたら画質が許す限り低負荷な設定にしていくといいだろう。
:圧縮形式|CPUへの負荷が低いAMV3コーデックを使うのがいいだろう。AMV3コーデックにはS0~S4の設定があり、数字が少ない方がCPU負荷が低い。
但し、その分サイズが増大するので、HDD転送がボトルネックになる可能性が出てくる。
画質面ではS0~S2が最も高画質、S3は若干画質低下、S4はさらに画質低下。
バランス的には高画質のS2及び、高圧縮のS3をオススメしたい。S3は画質低下と言っても個人的には実用上全く問題はないと思える。自分の目でチェックして確認するといい。
S2/S3でもCPU負荷が高い場合はS1を試すといいだろう。
-画質:S0=S1=S2>S3>S4
-圧縮率:S4>S3>S2>S1>S0
-負荷:S0>S1>S2=S3>S4
HDD速度が早い環境でCPU負荷を極力下げたい場合、未圧縮&footnote(AMV3コーデックのS0(圧縮なし)は圧縮しない(符号化を行わない)という意味では同じだが、AMV3コーデックは色空間をYV12という形式(元はRGB32)に圧縮している。サイズはRGB24よりもさらに小さくなるが、画質への影響はある。但し、最終的にx264でエンコードする場合はいずれにしてもYV12に変換する必要があるので、その場合あまり気にする必要はないとも言える)を選択する。
未圧縮はエンコードしないので最もCPU負荷が低く最も高画質だが、膨大なサイズとなるためHDD速度への要求が大きい。RGBフォーマットをRGB24にすると、若干CPU負荷が増えるが同じ画質でサイズを小さくできる。
未圧縮を利用する際はフレームドロップを防ぐためにもバッファサイズは大きめに取っておきたい。AMVを使う場合でもバッファサイズが大きいに越したことはないが、未圧縮ではとにかくビットレートが高いためあっという間に溢れてしまう。
低負荷高画質という利点はあるものの、特に高解像度ではおよそ現実的ではないビットレートになるため、よほど高速なHDD(RAID0)でないとまともにキャプチャできないと思われる。
:フレームレート|もしゲームを60fpsで録画しているなら、30fpsにしてみるといい。
滑らかな映像を目指すなら60fpsだが、30fpsでも露骨にカクカクというわけではなく十分に見れる映像になる。
それだけで画像取り込みの負荷は半分になるので、負荷低減には有効な手段。
さらに半分の15fpsになると、違和感が目に見えてくる。1枚1枚の映像の画質としては変わらないのだが、コマ送りとまでは言わないもののそれに似た印象を受けるだろう。
他の設定項目をいじりたくない場合、30fps未満に関しては下記の画像縮小とフレームレートのどちらを調整するか考えることになる。
文字などをくっきり見せたいならフレームレートを下げる、動画としての滑らかさを維持したいなら画像縮小する。
:画像縮小|取り込んだ画像を縮小処理し、エンコードにかかる負荷を低減する。
縮小処理にも負荷はあるが、それよりもエンコード負荷の方が圧倒的に大きいので、結果的には負荷の低減となる。
縮小品質は高くないので、仮にキャプチャ後に縮小するとしても、取り込み時は元の解像度のままにした方が高画質になる。
高解像度取り込み時、上記の手段ではキャプチャフレームレートが改善しなかった場合に利用する。
使うならAMV3コーデック設定の"ハーフサイズ"にチェックを入れる。これで解像度が1/2となり、負荷が激減する。
80%といった中途半端な数字の縮小をするなら、設定画面の画像縮小機能を利用する。ただ、その程度の縮小をするのであれば、取り込み範囲(ゲームであればゲームの解像度)を調整しこの機能を利用しない方向で調整した方が画質には有利。
とはいえプレイ環境を重視したい、録画フレームレートも下げたくないという場合は、この機能を使うといい。

**HDD転送速度がボトルネックの場合
:RAID0の構築|ハードウェア的な解決方法。純粋に転送速度を上げる。
:圧縮形式の変更|画質は悪化するがAMVコーデックの設定をS4(高圧縮)にしてみる。もしくは他の高圧縮コーデックを利用する。
しかし圧縮率の高いMPEG4系のコーデックは軒並みCPU負荷が高いので、今度はCPUがボトルネックになる可能性が出てくる。
:画像縮小|HDD転送がボトルネックの場合でも、単純にサイズが減る画像縮小は極めて有効な手段。しかし上でも書いた通り画質の悪化が大きいので、極力利用したくはない。

*備考
**疑似フルスクリーンキャプチャ
アマレココではフルスクリーン表示状態のゲームの録画はできない。&footnote(一部ゲームに限ってはプラグインを利用してフルスクリーン録画も可能)
しかし、要はディスプレイいっぱいの画面を使ってゲームしながら録画したい、というだけのことであればウインドウモードの画面サイズを変更してそれをキャプチャすればよい。

”Resize & Move”というソフトを使うとウインドウモードで動作しているゲームなどのウインドウサイズを変更することができる。
3Dゲームならば単に解像度をディスプレイ解像度と同じにするだけでもいい。
ウインドウを大きくできたら、アマレココの取り込み範囲指定でゲームが動作しているウインドウを指定してキャプチャを行う。
ただし、解像度が大きくなればなるほどキャプチャ負荷が高くなるため、この方法はPCスペックに対する要求が大きい。
簡単にフルスクリーン録画するならばやはりDxtoryなどを利用するのが望ましい。

***Resize & Move ダウンロードサイト
-509 - [[http://page.freett.com/509/]]

**AMV2コーデック
AMV3と一緒にインストールされる高画質チューニングのAMVコーデック。シェアウェア\1,260
AMV3がどのモードでもYV12に色空間を圧縮するのに対し、AMV2は入力と同じ形式のまま、あるいはYUY2を使って圧縮することができる。

#include(AMV2とAMV3の比較)



----