fc2ブログ
 

UtVideo T2 フレーム間圧縮対応 AMV4と同等の性能に

梅澤 威志さんのビデオコーデックUtVideoの最新バージョン20.0.0に新しくフレーム間圧縮が追加されました。
また、ベンチマークテストも公開されています。

[UtVideo] バージョン 20.0.0

映像可逆圧縮コーデックベンチマーク 2018-06



私の方でYUY2のフレーム間圧縮に絞って簡単なテストを行った結果は以下の通りです。
テスト内容は「UtVideo T2が公開」と同じです。


圧縮効果
 圧縮モードサンプル1
圧縮しにくい
サンプル2
圧縮しやすい
UtVideo T2
Ver 20.0.0
UMH2 フレーム間圧縮 K303.185.21
AMV4
Ver4.10
DY33.094.95
性能差 3%5%

動きが少なく圧縮しやすい映像サンプルにてAMV4より5% UtVideo T2(UMH2)フレーム間圧縮の方が良い結果となっています。
また、動きの激しい(圧縮しにくい)サンプルにおいてもUtVideo T2フレーム間圧縮の方が3%良い結果となっていることから、圧縮効果に関してはAMV4(DY3)よりUtVideo T2(UMH2)のフレーム間圧縮モードの方が優れていると言えます。

一方、処理速度については梅澤さんのベンチマーク結果を見る限り、AMV4(DY3)の方がエンコードで15%から20%程度有利、デコードは同等と言ったところでしょうか。

ということで、AMV4(DY3)とUtVideo T2(UMH2)のフレーム間圧縮はそれぞれ「わずかな差で一長一短の関係」となり、もはやAMV4の独壇場とは言えなくなりました。

びっくりぽん!!!


AMV4のサンプル動画を再生するときのDirect Showグラフ

基本的にはMicrosoftの AVI Splitter と MicrosoftのAVI Decompressor を使って再生されます。

図1.RGBサンプル動画(sample_amv4_rgb32_dr3.avi)を再生する場合の標準的なグラフ(x86)
graphedit_wmp_rgb_x86.png


図2.YUY2サンプル動画(sample_amv4_yuy2_dr3.avi)を再生する場合の標準的なグラフ(x86)
graphedit_wmp_yuy2_x86.png


図3.AMV4デコーダーフィルタを使ったYUY2の再生グラフ(参考)
graphedit_wmp_yuy2_x86_amv4dec.png

図2では2つ目のAVI Decompressorを使ってYUY2をRGBへ変換していたのが、AMV4デコーダーを使うとYUY2のままレンダラーへ接続できて余計な処理を省ける。




AMV4ビデオコーデック Ver4.02 不具合修正

AMV4ビデオコーデックに不具合が見つかったのでその修正版です。

【更新内容】
(1) 端数がある場合(横サイズが16で割り切れない場合)に画像端が乱れたりバッファオーバーランが起こる不具合を修正
(2) インストールしたユーザー以外で設定の変更ができないのを修正(要アンインストール、設定ファイル削除)


端数に関しては画像サイズの横画素数が16で割り切れない場合で、且つ、画像バッファの先頭アドレスと1ラインのバッファサイズの両方でアライメントが合ってしまう場合に異常が起こります。
アライメントに関してはSSE版が16バイト、AVX版は32バイトです。

例えば1272x720 YUY2の映像をAMV4のSSE版で処理すると画像が乱れて可逆となりません。同じ条件でもAVX版はアライメントが合わないため正常に処理できます。

「端数がある時はアライメントは合わない」と思い込んでいたため、端数があって、且つ、アライメントが合う条件の処理がすっぽり抜けていました。

その他、インストール時にずっとSHIFTキーを押しながら操作すると強制的にエラーを起こしてエラーログを表示するようにしてあります。

ダウンロード
ホームページ


メディアプレイヤークラシック(MPC)でYUY2の動画が再生できない

AMV4ビデオコーデックで作成したYUY2の動画がMPCで再生できない場合があります。
同じ条件でもAMV2MTやAMV3では再生できるのにAMV4だと再生できません。

これには3つの要因が関係します
(1) MPCなどのメディアプレイヤーは画像サイズに制限があり、RGBは制限が緩いのに対し、YUY2では制限がきつい(特定の画像サイズしか扱えない?)

(2) AMV2MT/AMV3はYUY2の動画をRGBへ変換してMPCへ渡せるのに対し、AMV4はYUY2の動画はYUY2でしかMPCへ渡さないようになっている。

(3) MPCはYUY2の動画をRGBへ変換してくれない(WMPなどはYUY2の動画をRGBへ変換してくれる)。

このような事情からAMV4とMPCの組み合わでYUY2の動画を扱うと特定の画像サイズしか再生できない見たいです。
平たく言うと、対応できない画像サイズのYUY2動画はRGBへ変換して再生するけど、AMV4もMPCもRGBへ変換してくれないから再生できない。
と言った感じです。

具体例をあげると
1280x720 YUY2と言った一般的なフォーマットであればAMV4+MPCでも再生できますが、
1264x720 YUY2のように横サイズが16少ない画像サイズになると再生できません。
同じ画像サイズであってもRGB(1264x720 RGB32)であればAMV4+MPCで再生可能です。

ではどうするか?
手っ取り早い解決策はAMV4の方でRGBへ変換してあげればいい(変換する機能自体は実装済み)のですが、
画質面で不利になる可能性があるのでYUVの動画はYUVでのみ出力したいところです。

そこでAMV4デコーダーフィルターとなります。
コーデックの規格であるVCMにはおそらく画像サイズと言う概念しかないのでこのようなケースではどうにもならないのですが、Direct Show Filter(デコーダーフィルター)なら画像サイズとは別に表示エリアの概念があるため、YUY2における画像サイズの制限をなんとかできるかもしれません。

例えば、上記の1264x720の例であれば、画像サイズ(全体の大きさ)を1280x720とし、
表示エリアを1264x720とすることでYUY2のまま再生可能になるのではないかと思います。
もしくは、1264x720 YUY2のままネゴシエートできるかもしれません。

と言うことで、近々AMV4 Direct Show Decoder Filterを作って試してみようと思います。




GraphEditでみる1264x720 YUY2の再生グラフ
GraphEditで1264x720 YUY2の動画がどのように再生されるかを試したのが下図です。
graphedit.png

1つ目のAVI DecompressorがAMV4ビデオコーデックを使ってYUY2形式でデコードして
2つ目のAVI Decompressor 0001がYUY2をRGB32へ変換しています。
カラースペースコンバーターは何だろう・・・1ラインのバイト数をレンダラーの仕様と合うよう調整しているのかな

このようにWindows Media Playerなどはプレイヤー側(Direct Show Graphのインテリジェンス機能)の働きによりRGBへ変換して再生できます。ただし、明らかに無駄な処理が含まれているのも解りますね。
理想は、一つ目のAVI Decompressorと同じ働きを持つAMV4デコーダーフィルタを用意して、ビデオレンダラーと直結することです。RGB変換やカラースペースコンバーターは排除したいところですね。


AMV4ビデオコーデック Ver4.01 インストール関連修正

Program Filesへインストールできないパソコンがあるようなので、インストール先を変更できるように変更しました。
また、インストール時に異常が発生した場合にエラーログを表示するようにしました(異常が発生してもエラーログが表示されない可能性あり)。


AMV4ビデオコーデック Ver4.01 インストール関係の修正
(1) インストール先のフォルダーを変更できるようにしました。
(2) インストール時に異常を検出した場合にエラーログを表示するようにしました。



インストール時に次のエラーログが表示される場合(異常があってもエラーログが表示されない可能性あり)はProgram Files以外へインストールしてください。
install_error_log.png

例えば次のように”C:\amv4\”とします。
faq_install_amv4.png


インストール先は”C:\amv4\”でなくても構いませんが、半角スペースや日本語が含まれていたり、文字数が9文字以上のフォルダへインストールできないパソコンがあるようなので、ご注意ください。

インストールが終わったら設定画面を表示できるか確認します。 設定画面が表示されたらインストールOKです。

インストール時に上記のエラーメッセージ(エラーログ)が表示される場合はブログのコメント欄へログ内容を投稿して頂けると、program filesへインストールできない原因の特定に役立ちますので、ご協力を頂けると幸いです。

ダウンロード
ホームページ


2014.6.30追記
Program Filesへインストールできないけどエラーログが表示されない場合
異常がなくてもエラーログを表示するテストバージョンVer4.01aを用意しましたので、こちらを使ってProgram Filesへインストールして頂き、表示されエラーログを教えていただけると助かります。
amv401a_error_log.zip

下記のVer4.02を使ってください。



2014.7.1追記
amv401b_error_log.zip

ショートパスに全角チルダ”~”が含まれている場合に半角チルダへ変換する処理を追加しました。
これでProgram Filesへインストールできるかもしれません。
まだテスト版なので異常がなくてもエラーログが表示されます。

これでうまくいくようなら、エラーログを表示しないようにした正式版を一般公開します。
うまくいく、うまくいかない教えていただけると助かります。


これは関係なかったようです


2014.7.6追記
Ver4.02からインストール中にキーボードのSHIFTキーを押しながらインストール操作をすることで、強制的にエラーを起こしてエラーログを表示します。

エラーが一切でないのに、AMV4ビデオコーデックの設定画面が表示できない。とか、インストールそのものがキャンセルされてしまう場合は、SHIFTキーを押しっぱなしにしてエラーが出るか確認して見てください。
amv402.zip


AMV2MTとAMV4の違い まとめ

AMV4ビデオコーデックと同じRGB、YUY2に対応したAMV2MTとAMV4の違いを表にまとめました。

AMV2MTとAMV4の違い
   AMV2MT
Ver2.20i
AMV4
Ver4.00
AMV4補足
対応OS

Windows
2000/XP/7

各32bit版のみ

Windows7 SP1

Windows8.1
各64bit版のみ
新しいOSのみ対応
32bit版のOSでは
動作確認を行っていません
CPU拡張命令SSE2

SSE4.1

AVX2.0
SSE4.1必須
AVX2が使える場合は
自動的にAVX2を使います
対応プロセス32bitアプリのみ32bitアプリ
64bitアプリ
64bitOS完全対応
マルチスレッド1から8シングルスレッドのみ

シングルスレッドで

十分リアルタイム処理が可能
圧縮モード

高速可逆

標準可逆

標準(非可逆)

高圧縮(非可逆)

標準可逆

高圧縮可逆
可逆のみ
圧縮効果低め高め

可逆圧縮でもAMV2MTの

標準(非可逆)より高い圧縮効果

処理速度速い全体的にもっと速くなる

AMV2MTと比べ

SSE4版:やや速くなる

AVX2版:大幅に速くなる

デコード処理は最大で約3.4倍高速
    
最少画像サイズ80x4096x48 
画像サイズ横8、縦4の倍数横2、縦2の倍数 

RGB・YUY2変換

色サンプリング
左右の平均値左側の画素 
入力
フォーマット

RGB32

RGB24

RGB16(R5G6B5)

YUY2

UYVY

HDYC

RGB32

RGB24

YUY2

UYVY
RGB16とHDYCを廃止
圧縮
フォーマット

RGB24

YUV444

YUY2

RGB24

YUY2
YUV444を廃止
出力
フォーマット

RGB32

RGB24

YUY2

RGB32

YUY2
RGB24を廃止
FourCC‘AMM2’‘AMV4’ 
    
ハーフサイズ× 
プロファイル× 
インターレース画像× 
    
ライセンスキー共通共通

AMV2、AMV2MT、AMV3、AMV4

で共通

もっと詳しい違いについては次の記事を見てください。
AMV4ビデオコーデック 内部仕様でみるAMV4とAMV2MTの違い




AMV4ビデオコーデック オンラインヘルプ

AMV4ビデオコーデックのオンラインヘルプを用意しました
オンラインヘルプ


AMV2MT/AMV3からの主な変更点、および追加点は次のようになります。

(1) 対応するOSとインストーラについて
インストーラは32bitOS用と64bitOS用があります(コーデック毎ではなく、OS毎に用意しました)。
64bitOS用のインストーラには32bitコーデックと64bitコーデックの両方が含まれています。
なお、32bitOS用のインストーラを用意してありますが、動作確認ができないため動作対象外です。
オンラインヘルプ:インストール

インストーラがマルチユーザに対応しました。
インストールするユーザとコーデックを利用するユーザが異なっていても利用できます。

AMV2、AMV2MT、AMV3とは異なるコーデックですので、すでにインストールされているコーデックをアンインストールする必要はありません。
それぞれ個別にインストール、アンインストールできます。

(2) 仕様について
最少画像サイズは96x48です。(AMV2MTは80x40)
画像サイズは横2、縦2の倍数である必要があります。(AMV2MTは横8、縦4)
横を16の倍数としたときもっとも効率よく動作します。
RGBをYUY2へ変換する場合のカラー情報は左側の画素をサンプリングします。(AMV2MTは左右の平均値)
Intensity Proなどで使うカラーフォーマットのHDYCは動作確認が取れないため非対応としました。(一応実装はしてあります。)

(3) 動作確認用サンプル動画
動作確認用のサンプル動画とバッチファイルが同梱されています。
オンラインヘルプ:動作確認

(4) AVX2版とSSE4版について
AVX2版とSSE4版のどちらを使うかは自動で選択されます。
どちらが選択されたかは設定画面のタイトルで確認できます。
オンラインヘルプ:CPU確認

AVX2が使えるパソコンでどうしてもSSE4版を使いたい場合はメニューで設定します。
オンラインヘルプ:CPU設定

(5) ライセンスについて
AMV2、AMV2MT、AMV3用のライセンスを購入している場合は同じライセンスキーがAMV4でも使えます。
新たにライセンスを購入する必要はありません。AMV4の設定画面で登録作業をしてください。
設定ファイルは32bit版と64bit版で共通なのでどちらか一方で登録すればOKです。
オンラインヘルプ:ライセンス登録


ビデオコーデック・ベンチマーク2014夏

世界中のビデオコーデックが登録されているcodecs.comから可逆圧縮コーデックをピックアップし、ベンチマークテストを行いました。

今回はほとんどのコーデックに更新が無いため特筆すべき点がAMV4ビデオコーデック以外ありません。テストは公平に行いますが、記事はAMV4ビデオコーデック中心となることをご了承ください。
おそらく集約命令(Gather命令)が実用化されることで他のコーデックの性能も上がってくると思うので、それまではこんな状態が続くと思います。


1.テスト内容と条件
ベンチマークはHD(1280*720)のビデオキャプチャおよびPC画面のキャプチャを想定しています。
適当なサンプル動画(未圧縮YUY2および未圧縮RGB32)を用意して、Ut Videoの作者である梅澤さんが公開しているVC Testを使って処理速度と、圧縮効果を測定します。



1.1.テスト内容
次のPCを使い、3つのサンプル動画それぞれのテストと、マルチスレッドによる処理速度のテストを行います。


1.2.PCスペック

PCスペック
OS Windows8.1 x64 Professional
CPU Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz Haswell
MB ASRock H87 Performance (Intel H87)
Memory DDR3 1600 16GB(8GBx2 Dual Cannel)read=25.4GB/s write=14.8GB/s
Software Video Codec Test 2.0.0
備考 CPUは4コア、8スレッド、HTT対応、AVX2対応。動作クロックを3.4GHz(定格)で固定し、省電力設定およびTurbo BoostはBIOSで無効化、動作クロックがテスト中に変動しないようにしています。

※ メモリーのread,writeはCrystalMark 0.9.114によるものです。



1.3.サンプル動画

サンプル動画1 Nature Movie YUY2:動きの激しい比較的低画質な実写映像
 タイトル Mystery of the Nile
 情報 1280*720、2082frames、1分26秒、3,837,598,360Byte
sample1_nature.png
 備考  AviUtlを使ってYUY2未圧縮に変換。
 動きが激しくて、画質も悪いため圧縮しにくい不利な条件のそろった動画によるテスト。
 いつものベンチマークで使っている動画と同じものです。

サンプル動画2 CG Movie YUY2:動きの少ない高画質なCG映像
 タイトル The LEGOR Movie - Official Main Trailer [HD]  
 情報 1280*720、4321frames、3分00秒、7,964,559,144Byte
sample2_lego.png
 備考  youtubeから720p版をダウンロードしてAviUtlでYUY2未圧縮に変換
 動きが少なく、画質もいいため圧縮しやすい有利な条件のテスト。
 また、上下に黒帯が付いているので、黒帯部分で高い圧縮効果が得られるコーデックに有利となります。

サンプル動画3 PC Game RGB32:ノイズが一切ないゲーム画面のキャプチャ
 タイトル Street Fighter IV 
 情報 1280*720、15820frames、4分23秒、58,319,119,660Byte
sample3_sf4.png
 備考  ゲームのベンチマークソフトを1280x720、60fpsに設定して実行。
 アマレコTVのウインドウキャプチャを使ってAMV2MT:R2の可逆圧縮で録画。
 Virtual Dubを使ってRGB32未圧縮に変換。
 PC画面を録画することを想定したRGB可逆圧縮のテストです。 
 参考動画



1.4.コーデック

コーデック一覧
コーデック名 bit内容設定
 AMV2MT Video Codec
 Ver 2.20i
 32 YUY2のテストでは「Y2標準可逆」を使用
 RGB32のテストでは「R2標準可逆」を使用
 ライセンス登録済(ロゴなし)
config_amv2mt.png
 NEW 
 AMV4 Video Codec
 Ver 4.00
 64 AVX2版を使用
 ライセンス登録済(ロゴなし)

 YUY2のテストでは「DY2:標準可逆(速度)」
 及び「DY3:高圧縮可逆(圧縮)」を使用

 RGB32のテストでは「DR2:標準可逆(速度)」
 及び「DR3:高圧縮可逆(圧縮)」を使用
config_amv4.png
 Huffyuv
 Ver 2.1.1
 32 Predict median(best)
 RGB32のテストではアルファチャネルが含まれます。
config_huffyuv.png
 NEW 
 UT Video Codec Suite
 Ver14.2.0
 64 「圧縮率優先」および
 「デコード速度優先」の2パターンをテスト

 YUY2のテストでは「ULY2」を使用
 RGB32のテストでは「ULRG」を使用
config_utvideo.png
 Lagarith Lossless Video Codec
 Ver 1.3.27
 64 YUY2のテストでは「YUY2」を使用
 RGB32のテストでは「RGB」を使用
config_lagarith.png
 Alparysoft Lossless Video
 Ver 2.0
 32 lossless compression
 enable prediction
 realtime
 ロゴあり
config_AlparySoft.png
 CorePNG
 Ver 0.8.2
 32 1-Fastestconfig_CorePNG.png
 NEW 
 MLC Codec
 Ver 1.2
 64 Muximum speed
 Use Multithreading off
config_MLC.png
 FastCodec
 Ver 1.0beta
 32 Absolutely lossless
config_FastCodec.png
 MSU Lossless Video Capture
 Ver 0.6.0
 32 Absolutely lossless
 Maximize speed
 RGB32には対応していない
config_msu.png

※ bitはvctest-x86でテストしたものを「32」、vctest-x64でテストしたものを「64」としています。 両方用意されているコーデックでは64bit版を優先してテストします。
※ 規定の手順でWindows8にインストールできないコーデックを除外しました(Huffyuvだけは手動でインストールしてテストしています)。




2.結果

2.1.動きの激しい比較的低画質な実写映像
result1_nature.png
※ fpsは1秒間に何フレーム処理できるかを示し、数値が高いほど優れています。
※ compression ratio(圧縮効果)は未圧縮のデータに対し何分の1に圧縮できるかを示し。数値が大きいほど優れています。

圧縮効果の面でMLCが4.3と非常に優れています。
AMVビデオコーデックにとってはあからさまに不利な条件でのテストなので、圧縮効果の面で最下位。
処理は速いけど圧縮効果が低いコーデックと言った位置づけになります。
一方、AMV4のDY3は不利な条件でもそこそこの圧縮効果を発揮しています。
また、AMV4のデコード処理は大幅に高速化されていて、AMV2MT:Y2の527fpsに対しAMV4:DY2(AVX版)のデコード速度は1802fps(3.4倍)です。
そのほかでは、UT Video速度優先のエンコード処理がHuffyuvに肉薄しています。この部分は過去のベンチマークをみると徐々に差を詰めてきています。


2.2.動きの少ない高画質なCG映像
result2_CG.png

処理速度を見ると、大半のコーデックにおいてサンプル動画1のテストよりエンコード処理が早くなっている事が解ります。
多くのコーデックにおいて圧縮し易い映像では処理が早くなる傾向があるようです。
それに対しAMVビデオコーデックはサンプル1とサンプル2を比較してもエンコード処理の差はわずかとなっています。
AMVのエンコードには条件分岐処理が存在しないため映像の内容による処理時間の変動が起きにくい特徴があります。

次に圧縮効果の面をみると、MSUが18.1と突出しています。
そのほかは圧縮効果が5.0前後の集団と、10.0前後の集団(MLC、Lagarith、AMV4DY3)の2つに分かれます。
5.0前後の集団は映像の内容によらず5.0辺りから圧縮効果が伸び悩み、好条件であってもなかなか高い圧縮効果が得られません。
一方、10.0前後の集団は映像の内容によってはもっと高い圧縮効果が狙えます。
AMV4のDY3は二次圧縮を適用したことで、動きが少なかったり、単調な画像(グラデーションやべた塗りなど)、黒帯があるなどの条件において高い圧縮効果が狙えます。

AMVビデオコーデックのYUY2可逆における圧縮効果
 
 AMV2MT
Y2
 AMV4
DY2
 AMV4
DY3
備考 
 Mystery of the Nile 2.09 2.52 3.09 WMV
 The Discoverers (IMAX) 720p 4.13 4.16 4.95  WMV
 The Book Thief Trailer 4.32 4.95 7.37 H264
 RoboCop TRAILER 1 4.17 4.92 7.54 H264
 The LEGOR Movie 5.35 5.93 9.44 H264 黒帯あり
 Transformers 4  5.38 6.32 10.33 H264 黒帯あり
 Veronica Mars 7.09 7.72 13.66 H264 黒帯あり




2.3.ノイズが一切ないゲーム画面のキャプチャ
result3_GAME.png

Huffyuvはアルファチャネルも処理しているため不利な結果となっています。
MSUはRGB24でないと使えないようです。



2.4.マルチスレッドによるテスト
最後に各コーデックをマルチスレッドに設定した場合の処理速度を観察します。
AMV4はSSE4.1版とAVX2.0版をテストしています。
カッコ内の数値はスレッド数(フレーム分割数)で、1となっているのはシングルスレッドで処理しています。
mは「マルチスレッドを使う」と言う項目が用意されているだけでスレッド数が不明のコーデックです。
テストにはサンプル動画1を使います。
result4_multithread.png


Lagarithはマルチスレッドオプションを有効にすることで1.5倍程度fpsが向上しています。

MLCはマルチスレッドを有効にすることで約2倍fpsが向上。シングルスレッドでは720p 60fpsの録画は処理が間に合わず無理ですがマルチスレッドに設定することで可能性が出てきます。

UT Videoは分割数を増やす毎にfpsが上がっていくのがわかります。
4コア8スレッドのCPUによるテストなので、4分割あたりで頭打ちされるかと思いましたが、ハイパースレッドテクノロジーも有効に働くようです。

fpsが最も高くなるのはAMV2MTを8スレッドに設定した場合で2000fpsを超えます。
AMV4のAVX2版はSSE4版に対しエンコードで約1.4倍、デコードで約1.8倍の性能。128bitのSSEレジスタから256bitのAVXレジスタへ対応した効果が得られています。




AMV4は動画エンコード支援機能QSVを凌ぐ超低負荷

Intel製CPUに搭載されている動画エンコード支援機能Intel Quick Sync Video(以下QSV)はエンコード処理のほとんどを専用のハードウエアで処理するため、録画中のCPU使用率を大幅に軽減することができます。
一方、AMV4ビデオコーデックも極まった処理速度によりCPUの負荷を大幅に軽減できますので、どちらがよりCPU負荷が低いのか実際に録画中の様子を観察して比較してみました。
また、QSVと同様にCPU負荷を軽減できるNVIDIAのNVEncについてもテストしています。


1.テスト概要
できるだけ同じ条件で観察したいので一つのキャプチャソフトでQSVとAMV4の両方が使えるものを探しましたが、見つかりませんでした。
なので、QSVに関してはOBS(Open Broadcaster Software)とキャプチャカードに付属するVideoKeeper2を使い、AMV4はアマレコTVを使うことにします。画像サイズやフレームレートを揃え、ドロップフレームが生じない条件でテストしましたが、やはりキャプチャソフトによる違いが無いとは言い切れないためその点はご容赦ください。

1.1.テスト方法
各キャプチャソフト(配信ソフト)にて録画を行い、その時のタスクマネージャのグラフ(CPU使用率)を観察します。
ビデオキャプチャにはマイコンソフト社のSC-512N1-L/DVIを使いPS4版のBATTLE FIELD 4のキャンペーンモードのオープニングシーン(※)を録画します。
この動画の冒頭1分50秒と同じ内容


下図はOBSを使ってソフトウエア・エンコーダのx264にてローカル録画した時のグラフになります。
キャプチャ条件はHDMI 1920x1080 60p YUY2です。
graph_obs_x264.png

グラフの下部にある5枚の画像はキャプチャ中のおおよその映像を示しています。グラフのこの地点ではこんな感じの映像を処理していると思ってください。
グラフの左端はプレビューも、録画も行っていないため、ほぼCPU使用率が0%となっています。
そこから録画を開始し画像1の付近では、真っ黒な画面に小さい文字でゲーム制作会社などのテロップが表示されるシーンとなります。
このシーンは単調(1枚の画像として見たとき複雑でない、べた塗りやグラデーションの面積が広いなど)かつ動きが全く無い映像なためかCPU使用率は20%強と低めです。

グラフの中盤(画像2、3付近)は普通に動きのあるシーンとなり、CPU使用率は約55%と跳ね上がります。
グラフの後半(画像4、5付近)はオープニングが終わり、プレイ中となりますが、操作を行っていないためほとんど動きのない映像が続きます。動きがほとんどない映像ではCPU使用率も30%強と低めになるようです。

このようなテストを、エンコーダを変えて行います。


2.テスト条件
パソコンのスペックとソフトウエア
OSWindows8 x64 Professional
CPUIntel(R) Core(TM) i7-4770 CPU @ 3.40GHz Haswell
GPUGeForce GTX 650 Driver 337.88
MBASRock H87 Performance (Intel H87)
MemoryDDR3 1600 16GB(8GBx2 Dual Channel)read=25.4GB/s write=14.8GB/s
HDD録画用のHDD WD30EZRX 3TB
SoftwareOBS Ver0.624b 32bit版
Video keeper2 ver1.1.0.124.4 (SC512のキャプチャソフト)
AmaRecTV Ver3.00e (Ver3.00cと同じ)
Capture Card
SC-512N1-L/DVI DVI-D
Driver:1.1.0.125.0, 2013.11.12
Video SourcePS4版BATTLE FIELD 4のオープニングシーンを
HDMI 1080 60p YUY2でキャプチャ
この動画の冒頭1分50秒と同じ内容
備考CPUは4コア、8スレッド、HTT対応、AVX2対応。動作クロックを3.4GHz(定格)で固定し、 省電力設定およびTurbo BoostはBIOSで無効化、動作クロックがテスト中に変動しないようにしています。


3.各キャプチャソフトの主な設定
詳細設定は長くなるので「続きを読む」に記載します。ここでは特に重要と思われる内容のみ記載します。

3.1.OBS
QSVおよびNVEncにてローカル録画するように設定します。
ビットレートは8Mbpsとしました。
サウンドはアマレコTVとできるだけ同じ条件となるようMP3 128kbps 2chとしています。
デスクトップの音とキャプチャカードの音がミキシングされます。
obs.png

3.2.VideoKeeper2
QSVを使って録画するように設定します。
ビットレートは20Mbps。
オーディオミキサーの処理はありません。
vk2.png

3.3.アマレコTV
AMV4ビデオコーデックをDY3(YUY2高圧縮可逆)に設定しSSE4版とAVX2版のそれぞれで録画します。
ビットレートの設定はありませんが出来上がった動画ファイルから逆算すると約320Mbpsとなります(今回のテスト条件では秒間約40MByteなのでHDD単体でもドロップなく録画可能)。
オーディオ圧縮にLAME MP3 128kbpsを使います。
オーディオミキサーの処理はありません。
amarec.png


4.テスト結果
各エンコーダで録画した際のタスクマネージャのグラフに色を付けて合成したのが下図になります。
graph.png

グラフの前半部は録画していない状態(プレビュー処理のみ)のCPU使用率です。OBSの前半は停止状態(プレビューもしていない)です。
プレビュー中はPCを操作しているためグラフが少し乱れていますが、アマレコTV、VideoKeeper2ともにCPU使用率は約4%から5%です。
グラフの後半は録画中のCPU使用率となります。録画中はPCを一切操作していないためグラフが安定しています。
また、いずれのエンコーダも映像の内容によるCPU使用率の変動がほとんど生じていないこともわかります。

録画中のCPU使用率は全体的に6%から10%の間にひしめき合っていて僅差となりますが、最もCPU使用率を抑えられたのはアマレコTVとAMV4(AVX2版)の組み合わせとなりました。
二番手はVideoKeeper2のQSVとなります。同じQSVを使ったOBSよりCPU使用率が少ないことがわかります。
AMV4のSSE4版は処理が遅い分CPU使用率も少し高くなります。
OBSは他と比べるとCPU負荷が若干高めという結果になりました。純粋な録画とプレビュー処理のほかに、何かしら処理を行っていると推測されます(少なくともオーディオミキサーの処理が行われています)。
また、OBSのQSVとNVEncを比較するとNVEncの方がCPU負荷を抑えられています。


最後に録画したビデオファイルの画質を比較します。
下図は録画したビデオファイルをAviUtlで読み込んだ画像です。
ゲーム側の都合によりプレイする度に完全に同じ映像がレンダリングされるわけではないようなので、類似するフレームを抜き出しての比較となります。
image.png

AMV4はYUY2の可逆なのでオリジナルの画質に忠実です。
VideoKeeper2はビットレートが高い分、OBSより若干画質はよくなっています。
OBSの3つはこの例ではほとんど差が無いように感じますが、一般的にはx264、QSV、NVEncの順に画質が良いと言われています。
OBSの3つの色味が他と違っていますが原因は不明です。OBS側の設定で何かあるのか、AviUtlでmp4ファイルを読み込む際の入力プラグインの都合なのか・・・

続きを読む


AMV4ビデオコーデック ベンチマーク暫定版 もはや反則AVX2編

AVX2に対応したCPU「Haswell」でAMV4ビデオコーデックのAVX2版をテストします。
テスト条件は前回のSSE編と同じですのでパソコンのスペック以外は以前の記事を参照してください。
AMV4ビデオコーデック ベンチマーク暫定版 SSE編

なお、AMV4ビデオコーデックについては開発途中のバージョンによるテストですので、
最終的なバージョンと異なる場合があります。
完成後にもう一度ベンチマークをやり直し結果を掲載しますのでそちらも確認してください。

【ベンチマーク条件】
パソコンのスペック以外はSSE編と同じ
AMV4ビデオコーデック ベンチマーク暫定版 SSE編


パソコンのスペック
OSWindows8 x64 Professional
CPUIntel(R) Core(TM) i7-4770 CPU @ 3.40GHz Haswell
MBASRock H87 Performance (Intel H87)
MemoryDDR3 1600 16GB(8GBx2 Dual Cannel)read=25.4GB/s write=14.8GB/s
SoftwareVideo Codec Test 2.0.0
備考CPUは4コア、8スレッド、HTT対応、AVX2対応。動作クロックを3.4GHz(定格)で固定し、
省電力設定およびTurbo BoostはBIOSで無効化、動作クロックがテスト中に変動しないようにしています。



【ベンチマーク結果】
表1 シングルスレッドによるAMV2MT 32bit SSE2の結果(1スレッド、1コア)
 レベルエンコードデコード圧縮効果備考
時間FPS時間FPS
AMV2MT
32bit
SSE2
Y10.60 ms1648 fps0.80 ms1238 fps1.15YUY2可逆
Y21.24 ms801 fps1.90 ms523 fps2.09YUY2可逆
Y31.81 ms551 fps2.64 ms377 fps2.78YUY2非可逆
Y43.73 ms267 fps4.37 ms228 fps3.67YUY2非可逆 二次圧縮あり


表2 シングルスレッドによるAMV4 SSE4.1版の結果(1スレッド、1コア)
 レベルエンコードデコード圧縮効果備考
時間FPS時間FPS
AMV4
32bit
SSE4.1
DY21.09 ms910 fps1.17 ms850 fps2.52YUY2可逆
DY31.84 ms541 fps1.84 ms542 fps3.09YUY2可逆 二次圧縮あり
AMV4
64bit
SSE4.1
DY21.11 ms900 fps1.08 ms925 fps2.52YUY2可逆
DY31.78 ms558 fps1.66 ms601 fps3.09YUY2可逆 二次圧縮あり


表3 シングルスレッドによるAMV4 AVX2版の結果(1スレッド、1コア)
 レベルエンコードデコード圧縮効果備考
時間FPS時間FPS
AMV4
32bit
AVX2
DY20.84 ms1189 fps0.64 ms1557 fps2.52YUY2可逆
DY31.21 ms825 fps1.17 ms854 fps3.09YUY2可逆 二次圧縮あり
AMV4
64bit
AVX2
DY20.72 ms1386 fps0.55 ms1790 fps2.52YUY2可逆
DY31.07 ms 931 fps0.97 ms1029 fps3.09YUY2可逆 二次圧縮あり

※ 時間、FPS:1フレーム処理するのにかかった時間、FPSは1秒間に何フレーム処理できるかを示しています。この2つは同じ情報です。FPSの数値が大きいほど優れています。
※ 圧縮効果:未圧縮に対しデータ(ファイルサイズ)を何分の1に圧縮できるかを示しています。数値が大きいほど優れています。
例 圧縮効果が2.00の場合、未圧縮で録画した場合と比べファイルサイズを半分(2分の1)に減らす能力があります。



処理速度と圧縮効果について
圧縮効果についてはSSE版とAVX2版とで同じ結果となりますので前回のSSE編を参照してください。
処理速度についてはAMV2MTとAMV4 64bit AVX2版を比較します。
Y2とDY2を比較するとDY2の方がエンコード処理で約73%、デコード処理で約242%(3.4倍)性能が向上しています。
Y3とDY3を比較するとエンコード処理で約68%、デコード処理で172%(2.7倍)の性能向上となっています。
なお、AVX2 32bit SSE版のDY3のエンコードがY3より1%程度遅い結果となっています。前回のIvy BridgeでのテストではDY3の方が約8%速い結果となっているので、Y3とDY3のSSE版はCPUの違いにより優劣が入れ替わるくらいの僅差と言えます。


まとめ
以前公開したAMV2MTデコーダーのAVX2対応デモ版で3倍速いというのを示しましたが、
「3倍高速 AVX2対応 AMVデコーダー デモ版」
「AVX2対応 AMVデコーダー デモ版の追試」

AMV4はさらにその上を行く3.4倍の性能(デコード処理)に達します。これはデモ版の時はAMV2の仕様に合わせてコーディングする必要があった(AMV2の仕様は2008年にSSEを前提に作成したのでAVX2には向かない部分が含まれる)のに対し、AMV4ではAVX2の特性に合わせ仕様の作成段階から取り組んだためです。
その結果、仕様とコーディングの両面でAVX2の性能を 相当高いレベルまで引き出せたと思います。

AMV4のAVX2版を簡単にまとめると
(1)  エンコード処理の処理速度が約70%程度向上する
(2)  デコード処理の処理速度が200%程度向上する
(3)  可逆圧縮の圧縮効果がDY2で最大約20%、DY3で平均約50%向上する
(4)  AVX2が使えるPCでは処理速度と圧縮効果の両面で大幅に性能が向上する


※ 記事の内容は開発中のものです。公開時の仕様と異なる場合があります。
最終的な仕様については、公開時の記事を見てください。



 
 
あまラボへようこそ
このブログでは自作ソフトの最新情報やtips、PC動画に関する話題を掲載していきます。各記事へは下にあるカテゴリからアクセスして下さい。

ファイルのダウンロードはホームページの方でお願い致します。

質問・要望・不具合報告はこちら
アマレコTV
アマミキ!
アマレココ
アマレコ・ライト
ファンタジーリモート
AMVコーデック



ホームページ
カテゴリ
最新コメント
カレンダー
04 | 2023/05 | 06
- 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 - - -
最新記事
最新トラックバック
ブログ内タグ

アマレコTV ビデオキャプチャ アマレコVR AMVコーデック Oculus Quest アマレココ アマミキ! コーデック gQuest SC500 動画配信 Pico GO ファンタジーリモート 4K アマレコライト プラグイン G2 AMV4 oculus Unity SC512 ライブ機能 パススルー機能 デスクトップキャプチャ AVX2 Passthrough FAQ リモートソフト 質問コーナー ニコニコ動画 HDキャプチャ DirectShow 120Hz 背景透過 遅延 可変再生速度 レゴ 解説動画 Meta 組み換え VR LEGO XL2420T GV-USB2 2 アセット機能 液晶モニター 倍速液晶 デインターレース PS4 ベンチマーク アマステ AMV2MT Asset Intensity Pico4 MetaQuest Pro VRonVR MonsterX3A designs VideoKeeper2 AVX Alternate XCAPTURE-1 SD-USB2CAP4 GV-USB インストール RDT233WX-Z 32ZP2 31006 ffmpeg WindowsMR Rift 画像処理 31024 T2 60fps RGBキャプチャ UtVideo Shadow Play RYZEN 電源オプション HDCP Haswell HDMI 音遅延 QSV MonsterXU3.0R LameACM MP3 31021 フィギュア 音ズレ 録画 ゲームスムーズモード HT OBS MPC ハイパースレッディングテクノロジー NVEnc 液晶テレビ DirectShowFilter プレビュー 擬似NTSCキャプチャ SD-USB2CUP4 Livetube AtomでHDキャプチャ キャプチャーツール シンクライアント イベント IntensityPro DC-HD1 額縁遅延 REGZA ZP3 32ZP32 オーバーレイ リプレイ機能 モノステ 倍速駆動 倍速補完処理 キャプチャカード Robust Video Matting API APIパススルー機能 60Hz 検証 passthrough python pytorch ハンドジェスチャー パカラーススルー機能 AssetBundle 2.0 Tracking ファイルマネージャプラス SkyBox Hand AMPlayer 新プレイヤー機能 GPU使用率 LAVFilters Preferred 可逆圧縮 GV-USB3 Kabelake SSE SKnet Filter Tweaker Windows 90Hz 新アマレコVR MR VRコントローラー SteamVR VR動画 フレーム間圧縮 XCapture-1 

ブログ内検索
月別アーカイブ
アマレココに関するリンク
お世話になっているソフトのリンク
RSSリンクの表示
管理画面
  • 管理画面