アマレコTVスレについて その4 4K録画
おおもとの質問は「PCゲームを4K 60fpsで録画できるコーデックはありますか?」ですがコーデックの話だけでは意味がないのでもっと広範囲について述べます。
4K録画についてはAMV4公開時に4K対応を謳おうかどうか迷った部分です。
理論上は可能ですが、実際に4K録画のテストをしてみたところ確実にできると言える結果とはならなかったため結局4K対応は謳わなかったと言う経緯がありますが、現状、一般的な環境において4K録画を行うにはビデオコーデックの処理能力、CPUの処理能力、ビデオファイルを書き出すストレージの処理能力の全てが4Kの要求スペックを満たす必要があります。
あと使い方によって変わってきてしまうため何とも言えませんが、キャプチャソフトの処理能力やビデオキャプチャカードを使うならそちらも4Kの要求スペックをクリアする必要がありますし、PCゲームをデスクトップキャプチャやDirectXキャプチャで録画するなら更にゲームを4Kで動作させるだけのスペックが必要となります。
1.コーデックとCPUについて4Kを満たすスペックとは?
ビデオコーデック・ベンチマーク2014夏

理論上はこのベンチマーク結果を9で割った数値(※)が60fpsを上回れば4Kを処理する能力のあるコーデックと言えます。
言い換えるとグラフ内のfpsが540fps以上なら良いとなります。
※ (3840x2160) ÷ (1280x720) = 9
AMV4は処理の遅いDY3でも9で割った値が100fpsを上回るため理論上エンコード、デコードとも4Kを十分処理できます。
他のコーデックについては一般的なCPUの処理能力(1スレッド)では無理であると言えます。
なお、UT Videoに関しては4コア8スレッドで処理することで理論上可能となってきます。

このように現状における4Kの要求スペックは以外と高く、ほぼAVX2対応のCPUとAMV4一択なのではないでしょうかと言うのが私の見解です。
2.4K録画を可能とするストレージとは?
次に動画ファイルを書き出すストレージの処理能力ですが、無圧縮であった場合約1000MB/s(※1) 必要となります(RGBの場合約1500MB/s)。
なので、無圧縮で録画するには最低でもSSDを3台以上ストライピングする必要がありますが、それでも実際にできるかどうかはちょっと判りません。なので、コーデックを使って圧縮するのが現実的です。
圧縮した場合の要求スペックはYUY2フォーマットの場合 約333MB/s(※3) になりますので、理論上SSDを1台用意すれば可能なように思えます。RGBについては不明ですが適当に書くと600MB/s(※4) くらいでしょうか。圧縮したとしてもSSDは2台以上必要に思われます。
※1 4K(YUY2フォーマット) 60fpsの場合 3840x2160x2x60 = 約995 MByte
※2 4K(RGB24フォーマット) 60fpsの場合 3840x2160x3x60 = 約1492 MByte
※3 圧縮効果を3と仮定
※4 圧縮効果をYUY2より悪く2.5と仮定
3.実際のテスト
以上を踏まえ理論上4Kの要求スペックを満たす環境を用意してテストを行いました。
CPU: i7-4770 @3.4GHz固定 AVX2対応
コーデック: AMV4 DY3
ストレージ: CSSD-S6T256NHG5Q 公称値でシーケンシャルライト483MB/s
キャプチャソフト: アマレコTV
キャプチャカード: くるくるベンチ 3840x2160 YUY2 59.94fpsに設定
結果は録画を開始すると徐々に書込みバッファの空きが減っていき、書込みバッファの空きが0%になるとまともに録画できなくなります。
出来上がったビデオファイルを再生すると書込みバッファが枯渇するまでの部分は正常に見えましたが、後半は明らかにスペック不足でまともに録画できるとは言えない状態です。
アマレコTVのレポートファイル(書込みバッファが枯渇する前の正常な部分)をみると
VT=00:00:04.442s( 265f), Cap= 0f( 0D), Enc=13.077ms, Siz=4186KB( 25%)KEY, Drp=0, (+)0, (-)0, Buf= 1, o
IT=00:00:04.442s, HDD=244.8MB/s( 95%), fps=59.9f/s
となっているので、このテスト条件のストレージ要求スペックは244MB/sであることが判ります。
一方、エンコード処理は13ms前後なのでぎりぎり60fpsのリアルタイム処理をクリアしていると言えます。
以上より、CPUとコーデックは4Kの要求スペックを満たしていると判断しますが、アマレコTVのファイル処理とSSD 1台の構成は4Kの要求スペックを満たしていないようです。
録画失敗の原因はSSDが公称値を下回るかアマレコTVのファイル処理がSSDの性能を発揮しきれていないと言ったところでしょうか。
4.まとめ
現状、一般の人が4Kの録画を行うにはi7 AVX2対応以上のCPUとAMV4ビデオコーデックは必須のように思います。
それに加え、SSD複数台かアマレコTV以上のファイル処理が実装されたキャプチャソフトが必要と思われますので、まだまだ実現するのは難しいと私は感じました。
更にPCゲームとなると絶望的なように思いますが、NVidiaのShadowPlayのようにビデオカード上でエンコードするようなシステムであれば可能なようです。h264でエンコードすればストレージの要求スペックも大幅に下がりますので、そちらの方が現実的と言えなくもないけど、はやりそこそこ高価なGPUが必要なようですし、ビデオキャプチャでは使えないので、何とも言えないか。
あと、4K対応のビデオキャプチャカードも販売されているようですが要求スペック(CPU、コーデック、キャプチャソフト、ストレージ)が明記されていないので、どういった構成で運用できるのか私も知りたいところです。
4Kを扱うためのプラン
1) 無圧縮プラン: SSD 3台以上のストライピングが必要(実際はもっとかもしれない)
2) AMV4圧縮プラン: AVX2対応のCPUとSSDの性能を引き出せるキャプチャソフトかSSD 2台以上のストライピングが必要
3) ShadowPlayプラン: GTX900番台が必要?(PCゲーム専用、ビデオキャプチャは不可)、ストレージはHDD 1台で可(ただし画質次第)
アマレコTVスレについて その3 書込みバッファが0%
録画中にアマレコTVのステータス欄のHDDの空きバッファが0%になってしまいうとのことなので、完全にHDDの書込み速度不足が原因です。
録画保存先を別のHDDへ変更するか、不要なファイルを削除してからデフラグ等でメンテナンスしてみてください。
そして、何より重要なのが圧縮効果の高いコーデックを使うことです。
処理速度の問題だと考えてAMV4をDY2へ設定して使っているとのことですが初期値は圧縮効果の高いDR3です。DY2へ変更するのは逆効果となってしまいます。
一般的にアマレコTVとAMVビデオコーデックに関してはCPUへほとんど負担がかかりません。なので通常の利用において処理を早くするような設定にする必要はありません(特にコーデックの設定を変更する必要はありません)。
むしろ、録画に関してはHDDへ負担がかかりますので圧縮効果の低い設定にしてはいけません。
DR2やDY2は極端にCPUが非力な場合や強力なストレージを用意する代わりに極端にCPU負荷を減らしたい場合に使う設定です。一般的な用途には不向きです。何よりファイルサイズがデカくなるデメリットがあります。
まとめると
・AMV4をDR3かDY3へ設定する
・録画先HDDの不要なファイルを削除した後、デフラグをする
・それでもだめなら、アマレコTVの録画設定でfpsの目安を30fpsとして妥協するか、HDDを買い足すしかない。もしくはMJPEG等の非可逆コーデックを使う。
と思ったけど、すでに30fpsにしても根本的な改善はみられないようなので、致命的にHDDへの書き込み速度が足りない可能性が高いです。
1280x720 YUY2 30fpsをAMV4のDY2で録画する場合、1秒間に30MB程度の書き込みができればいけると思いますが、30MBを下回るとなれば相当重症な気がします。(今どきのHDDなら大抵100MBを超える)
システムメモリが不足していてHDDの一部が仮想メモリとなってしまい、録画と仮想メモリでHDDが悲鳴を上げている可能性もあるし、セキュリティソフトなのどの常駐ソフトもHDDへ頻繁にアクセスしているかもしれません。そもそも、物理的な故障も視野に入る状況なので、小手先の対処は不可能です。
録画専用にHDDを増設、システムメモリの増設、セキュリティの見直し、常駐ソフトの見直しOSのクリーンインストール、マザーボードやストレージインターフェイスの交換などが必要かもしれません。
当初、質問者はHDDの空きバッファが0%になっていることに気が付いているので簡単に解決しそうに思いましたが、HDDに致命的なトラブルが生じていると解決は難しいかもしれません。一つ言えることはアマレコTVやAMV4ビデオコーデックの設定などでは改善されないでしょう。
アマレコTVスレについて その2 予約録画
また、プログラムを作るのが大変なだけでなく、利用者側にも多くのことを強いるのが予約録画システムです。それを補うためのユーザインターフェイスやドキュメントまで考えるととても私の能力で実現できるものではありません。
予約録画システムはそれ単体で十分価値のあるアプリケーションですので、好きな予約録画システムと好きなキャプチャソフトをそれぞれ用意して連携させるのがスマートな方法と私は考えます。
なので、アマレコTVとしては起動オプションで連携に必要な最低限の機能を提供するのみとなります。
どうしてもアマレコTVを使って予約録画を行いたい人は、優秀な予約録画システムの制作者へお願いするか、間を取り持つものを自作すれば良いと思います。ぶっちゃけ予約録画システムを作る側からしたら、実際に録画するキャプチャソフトなんかアマレコTVでなくても録画機能さえあれば何でもいいよって思うだろうし、ユーザー視点で見ても予約録画にわざわざアマレコTVを使う意味ってあるのでしょうか?
アマレコTVスレについて
アマレコTVで録画したファイルが30分で約0.03秒(30ms)映像に対し音が遅れると具体的な数値が書かれていたので
少し言及すると。
Windowsの根本的なオーディオ仕様が数十ミリ単位での処理(DirectShowでは40ms)で設計されているようですので、大体40ms以下の細かいタイミングについてはWindows上で動作するアプリケーション(DirectShowアプリ)から制御することは無理と思われます。簡単に言うと録画する度に40ms程度のランダムなずれが必ず生じる。
また、これとは別にビデオキャプチャカードの仕様でも最少処理単位が決まってくるので(GV-USB2は50ms単位)、このレベルの細かいずれは仕組み上、不可避です。
なお、これらはメディアプレイヤーなどで再生する場合にも適用されるので、完璧に映像と音声のタイミングが合っている動画ファイルでも実際に再生される映像と音声には数十ミリ秒単位の不特定のずれが生じていると思われます。(再生に関しては計測したことが無いので憶測です)
アマレコTVで録画したものをメディアプレイヤーで再生した場合に、0.03秒ずれていたとしても、0.03秒と言う小さいずれでは、それが録画によるずれなのか、再生によるずれなのか判断できないでしょう。
なので、0.03秒という小さい話はアマレコTVのスレでどうにかしたいと言ってもどうにもならないし、他のキャプチャソフトを使えば解決するというものでもないと思われます。
現実的にはおそらく0.03秒のずれを一般の人では感知できないと思われますので、目視で確認と言うのも無理があると思われます。私の感覚だと0.1秒(100ms)でも「ずれていると言われればずれている」。「ずれていないと言われればずれていない」と感じます。
これを書き込んだ人はどうやって0.03秒と言うのを計測し(割り出し)たんだろうか。
1時間で0.06秒、2時間で0.12秒、徐々にずれてくるって場合に、30分で計算すると0.03秒になるといったことなのでしょうか。
一応アドバイすると、徐々にずれてくるって話の場合はレポートファイルを見れば何かわかるかもね。
最初から最後まで常に0.03秒ずれているって話なら、上記の通りなので諦めてください。