画質比較 - x264、CUDA、ほか
GTX460も買ってしまったことだし、画質の比較をしてみる。
もうTMPEGEnc VMW 5 体験版の期限も迫っているし…ね。
えと、あらかじめ言っておくと、画像を貼りつけまくったので、もしかすると重いです。
もうTMPEGEnc VMW 5 体験版の期限も迫っているし…ね。
えと、あらかじめ言っておくと、画像を貼りつけまくったので、もしかすると重いです。
まず、環境とか基本的なところの説明から。
【環境】
OS : Win7 x64
CPU : Xeon W3680 (6C/12T, L3=12MB) @ 4014MHz
メモリ: 12GB
GPU : GTX460
念のため書いておくと、この環境だとマルチスレッド効率が低いものは遅くなってしまう。
【入力データ】
例によって Little Busters Ex のOPデモ版。
解像度 : 800x600p
fps : 30.000fps
フレーム数 : 6891 frame (約 3分49秒)
音声 : 出力しない
フィルタは全くかけず、そのままエンコードする。
そいで、平均レート1000kbpsになるようにエンコードして、その画質と速度をチェックしてみる。基本的に1passVBRを使って品質を変えながら1000kbpsになるようにエンコードするという、実にめんどくさいことをやってみた。2passを使えばいいようなもんだが、2passだと1passと違った様子が出てくるかもしれないので、今回はあくまでも1passにこだわった。
この動画(リトバスExOP)を1000kbpsってのは結構厳しいので、どうなることやら…
画質の比較には4635frame目の左上400x300の部分を使う。
試したソフトウェアは…
Aviutl0.99i8 + x264guiEx 0.13 + x264.exe r1834
TMPEGEnc Video Mastering Works 5 体験版 (v5.0.1.19)
TMPEGEnc 4 XPress (v4.7.8.309)
あとはCUDAが使えるらしいので…
MediaCoder 0.7.5
ほかにも次の3つはCUDAが使えるというのだが、あきらめた。理由は…
PowerDirector9はなぜか自由に解像度を指定できないので800x600出力ができないorz なんか640x480,720x480,1280x720などいわゆる「一般的な解像度」からしか選べない…論外。
MediaEspresso6はなんと動画ファイルを「インポートできません」ってんなアホな。ただのMPEG1動画なのに…私の使い方が悪いのだろうか…
badaboomはどうやらGTX4xx(5xx)のfermi系列には対応してないらしい。なん…だと…
そういやTMPEGEnc VMW5体験版がアップデートでx264 の --min-keyintに対応した。最小GOP長。私はこれを小さめの4とかにしないと気が済まないので、うれしい限り。(keyintの1/10とかねーよ)
その1
まずはAviutl + x264guiEx + x264.exe と TMPEGEnc VMW5 x264エンコーダ で比較してみる。だいたい似たような感じになるはず。ただまあ、体験版っていう透かしが入るので、厳密に同じではないが…
・Aviutl + x264guiEx + x264 HQ
・Aviutl + x264guiEx + x264 LQ
・TMPEGEnc VMW 5 + x264 HQ
・TMPEGEnc VMW 5 + x264 LQ
HQとLQというのはx264オプションの設定の違いで、HQは高画質・低速、LQは低画質・高速寄りの設定。
とりあえず、ビットレート。

約1000kbpsである。
つぎに、速度。

HQとLQでは大きな差があり、またTMPEGEncとAviutlではわずかにAviutlのほうが速い。これは透かしを焼きこむ分などが影響しているかもしれないし、違う原因かもしれない。
で肝心の画質比較。
まず元画像。

次にAviutl HQ。

TVMW5 x264 HQ。

Aviutl LQ。

TVMW x264 LQ。

わかりにくい場合は、画像を新しいタブで開き、タブを切り替えながら見ていくとよいと思う。
まず、originalと比較すると、当然エンコード後は一部ぼけてしまっていることがわかる。
HQ同士、LQ同士をそれぞれ比べると、ほぼ似たような画質だが、若干Aviutl+x264のほうが高画質な気がする。
HQとLQで比べると、これもまた若干だがHQのほうがきれいに見える。左下の葉のボケ具合や、右上のクドの腕の下あたりがわかりやすいだろうか。
まあでも、オプションをそろえてやれば、ほぼおなじ結果になるということがわかる。当然といえば当然だが、一応これは示しておきたかった。
あとx264は設定次第で、かなり高速にもできるし、逆に時間をかけて高画質にできる、ということもわかる。
その2
がんがんいこうぜ。
比較するのは
・TMPEGEnc VMW5 x264 HQ
・TMPEGEnc VMW5 x264 MQ
・TMPEGEnc VMW5 x264 LQ
・TMPEGEnc 4 XP MainConcept H.264
・TMPEGEnc VMW5 wmv
・TMPEGEnc VMW5 Divx
・TMPEGEnc VMW5 CUDA H.264
・MediaCoder CUDA H.264
例によってHQ,MQ,LQの違いはx264のオプションの差。最後に細かいオプションを書いておいた。
TMPEGEnc VMW5 CUDA H.264はVBRだとエラーで止まってしまうので、残念ながらCBR。
まずは、ビットレート。だいたい1000kbpsにそろえたよ、ということ。

次にエンコード速度。

速度についてはCUDA無双。そんなに高速で大丈夫か?
だが設定次第ではx264も速い。wmvやdivxはマルチスレッド効率が悪く6C/12Tを使いきれていない。CPU使用率がずっと低いままだった。そのためCPU使用率が高めだったx264と比べ、相対的に遅くなってしまった感がある。というよりx264のマルチスレッド効率の高さが優秀すぎるのかもしれない。
さて、画質チェック。
オリジナル

TVMW5 x264 HQ
かなり良い画質。

TVMW5 x264 MQ
HQより全体的に少しボケぎみである。

TVMW5 x264 LQ
MQと比べると、左下のほうがさらにぼけている。

TMPEGEnc4 MainConcept H.264
悪くはないんだが、よくもない。割とボケぎみ。

TVMW5 wmv
かなりぼけている。

TVMW5 Divx
wmvとは少し違った画質劣化で、ボケるというよりは細かいブロックやノイズが見える。

TVMW5 CUDA H.264。
ボケボケなうえ、でかいブロック状のものが見える。(左のほう)

MediaCoder CUDA H.264。
左のほう特大の変なブロックが見える…どっからきた…

わかりにくい場合は、やはり画像をタブで開き、タブを切り替えながら見ていくといいと思う。
で、わかってはいた(っていうか予想はしていた)ことだが、CUDAエンコの画質残念杉。これは静止画での比較だけど、動画で見てみるともっと動きの大きいところでは、猛烈に破たんする。
TMPEGEnc VMW5のCUDAは、そもそもCBRとVBRしかない(しかもVBRは止まってしまうのでCBRしか使えなかった)のが問題で、品質基準がない点は問題。MediaCoderのCUDA H.264は量子化量(QP)を指定できるけど、画質的にはTMPEGEnc VMW5のCUDAより悪くなっている。その他のソフトのCUDAエンコーダは使えなかったし…
ハードウェアエンコというと、あとはSpursEngineとかあるけど、あれもPowerDirector9同様、自由に出力解像度を設定できなかったような気がする(持ってないのでわかんないけど)。画質もそんなによくはない…らしいし。
話が少しずれるけど、ほかのエンコードソフト使ってみて思ったのはTMPEGEncはやっぱり使いやすいし、いろいろ便利だということ。MediaEspressoとか読み込んですらくれないし…
あとハードウェアエンコというと、TMPEGEnc VMW5の対応しているSandyBridgeのハードウェアエンコかな…ここ(リンク>>)にIntel Media SDKを使ったレビューが載っていて、x264の2倍速いよ的なことが書いてあるけど、x264の設定はどんな風なのかとか、エンコード後の画質はどうなのかとか全く触れてないから、ほとんど参考にならない。x264の速度なんて設定次第でどうとでもなるんだし。ぶっちゃけ--me tesaとか--ref 16とか使えばいくらでも遅くできる。もちろん、これはCPUのレビュー記事で、SandyBridgeでこんなこともできるっていう紹介ができているのだからこの記事としては十分だろうけど。
というわけで、やっぱx264は優秀なんじゃないだろうか。速度と画質のバランスはオプションで結構自由に設定できるし。うん。え…オプションが多すぎてわからん?「パフォーマンス」の「やや遅い」とか「やや速い」とか使いましょう。だいたいはそれで大丈夫で問題ない。
GPUはフィルタリングかな、やっぱり。私はAviutlでノイズ除去フィルタnl-meansのGPU版でGPUを使おうと思う。
ここまで読んでくれた人、長文読んでくれてありがとうです。
おまけその1。
BitrateViewerでビットレートの分布が見える。いずれもクリックで拡大。
TVMW5 x264 HQ

TVMW5 x264 MQ

TMPEGEnc 4 MainConcept H.264

TVMW5 Divx

TVMW5 CUDA H.264。CBR…だなあ、やっぱり。VBRはどうして動かないんだか…

MediaCoder CUDA H.264

こうしてみると、x264は若干メリハリのついた容量配分になっているようだ。
おまけその2
あとは参考程度にx264のHQ,MQ,LQのオプションをコマンドライン的に書いておく。色空間とかのオプションは省略。
HQ
かなり重めの設定。
--preset slow --crf 23 --aq-mode 0 --qcomp 0.7 --rc-lookahead 60 --scenecut 60 --min-keyint 4 --keyint 300 --subme 9 --merange 32 --ref 6 --trellis 2 --no-fast-pskip --no-dct-decimate --nal-hrd vbr --vbv-maxrate 17500 --vbv-bufsize 17500
MQ
本当は--me umhをつけたほうがいいかもしれないけど…
--preset fast --crf 23 --aq-mode 0 --scenecut 60 --min-keyint 4 --keyint 300 --ref 4 --nal-hrd vbr --vbv-maxrate 17500 --vbv-bufsize 17500
LQ
やたら速い。
--preset veryfast --crf 23 --aq-mode 0 --partitions p8x8,b8x8 --scenecut 60 --min-keyint 4 --keyint 300 --bframes 2 --b-pyramid 0 --mixed-refs --ref 2 --nal-hrd vbr --vbv-maxrate 17500 --vbv-bufsize 17500
あとは--crfをいじって1000kbpsに近づくよう調整。
【環境】
OS : Win7 x64
CPU : Xeon W3680 (6C/12T, L3=12MB) @ 4014MHz
メモリ: 12GB
GPU : GTX460
念のため書いておくと、この環境だとマルチスレッド効率が低いものは遅くなってしまう。
【入力データ】
例によって Little Busters Ex のOPデモ版。
解像度 : 800x600p
fps : 30.000fps
フレーム数 : 6891 frame (約 3分49秒)
音声 : 出力しない
フィルタは全くかけず、そのままエンコードする。
そいで、平均レート1000kbpsになるようにエンコードして、その画質と速度をチェックしてみる。基本的に1passVBRを使って品質を変えながら1000kbpsになるようにエンコードするという、実にめんどくさいことをやってみた。2passを使えばいいようなもんだが、2passだと1passと違った様子が出てくるかもしれないので、今回はあくまでも1passにこだわった。
この動画(リトバスExOP)を1000kbpsってのは結構厳しいので、どうなることやら…
画質の比較には4635frame目の左上400x300の部分を使う。
試したソフトウェアは…
Aviutl0.99i8 + x264guiEx 0.13 + x264.exe r1834
TMPEGEnc Video Mastering Works 5 体験版 (v5.0.1.19)
TMPEGEnc 4 XPress (v4.7.8.309)
あとはCUDAが使えるらしいので…
MediaCoder 0.7.5
ほかにも次の3つはCUDAが使えるというのだが、あきらめた。理由は…
PowerDirector9はなぜか自由に解像度を指定できないので800x600出力ができないorz なんか640x480,720x480,1280x720などいわゆる「一般的な解像度」からしか選べない…論外。
MediaEspresso6はなんと動画ファイルを「インポートできません」ってんなアホな。ただのMPEG1動画なのに…私の使い方が悪いのだろうか…
badaboomはどうやらGTX4xx(5xx)のfermi系列には対応してないらしい。なん…だと…
そういやTMPEGEnc VMW5体験版がアップデートでx264 の --min-keyintに対応した。最小GOP長。私はこれを小さめの4とかにしないと気が済まないので、うれしい限り。(keyintの1/10とかねーよ)
その1
まずはAviutl + x264guiEx + x264.exe と TMPEGEnc VMW5 x264エンコーダ で比較してみる。だいたい似たような感じになるはず。ただまあ、体験版っていう透かしが入るので、厳密に同じではないが…
・Aviutl + x264guiEx + x264 HQ
・Aviutl + x264guiEx + x264 LQ
・TMPEGEnc VMW 5 + x264 HQ
・TMPEGEnc VMW 5 + x264 LQ
HQとLQというのはx264オプションの設定の違いで、HQは高画質・低速、LQは低画質・高速寄りの設定。
とりあえず、ビットレート。

約1000kbpsである。
つぎに、速度。

HQとLQでは大きな差があり、またTMPEGEncとAviutlではわずかにAviutlのほうが速い。これは透かしを焼きこむ分などが影響しているかもしれないし、違う原因かもしれない。
で肝心の画質比較。
まず元画像。

次にAviutl HQ。

TVMW5 x264 HQ。

Aviutl LQ。

TVMW x264 LQ。

わかりにくい場合は、画像を新しいタブで開き、タブを切り替えながら見ていくとよいと思う。
まず、originalと比較すると、当然エンコード後は一部ぼけてしまっていることがわかる。
HQ同士、LQ同士をそれぞれ比べると、ほぼ似たような画質だが、若干Aviutl+x264のほうが高画質な気がする。
HQとLQで比べると、これもまた若干だがHQのほうがきれいに見える。左下の葉のボケ具合や、右上のクドの腕の下あたりがわかりやすいだろうか。
まあでも、オプションをそろえてやれば、ほぼおなじ結果になるということがわかる。当然といえば当然だが、一応これは示しておきたかった。
あとx264は設定次第で、かなり高速にもできるし、逆に時間をかけて高画質にできる、ということもわかる。
その2
がんがんいこうぜ。
比較するのは
・TMPEGEnc VMW5 x264 HQ
・TMPEGEnc VMW5 x264 MQ
・TMPEGEnc VMW5 x264 LQ
・TMPEGEnc 4 XP MainConcept H.264
・TMPEGEnc VMW5 wmv
・TMPEGEnc VMW5 Divx
・TMPEGEnc VMW5 CUDA H.264
・MediaCoder CUDA H.264
例によってHQ,MQ,LQの違いはx264のオプションの差。最後に細かいオプションを書いておいた。
TMPEGEnc VMW5 CUDA H.264はVBRだとエラーで止まってしまうので、残念ながらCBR。
まずは、ビットレート。だいたい1000kbpsにそろえたよ、ということ。

次にエンコード速度。

速度についてはCUDA無双。そんなに高速で大丈夫か?
だが設定次第ではx264も速い。wmvやdivxはマルチスレッド効率が悪く6C/12Tを使いきれていない。CPU使用率がずっと低いままだった。そのためCPU使用率が高めだったx264と比べ、相対的に遅くなってしまった感がある。というよりx264のマルチスレッド効率の高さが優秀すぎるのかもしれない。
さて、画質チェック。
オリジナル

TVMW5 x264 HQ
かなり良い画質。

TVMW5 x264 MQ
HQより全体的に少しボケぎみである。

TVMW5 x264 LQ
MQと比べると、左下のほうがさらにぼけている。

TMPEGEnc4 MainConcept H.264
悪くはないんだが、よくもない。割とボケぎみ。

TVMW5 wmv
かなりぼけている。

TVMW5 Divx
wmvとは少し違った画質劣化で、ボケるというよりは細かいブロックやノイズが見える。

TVMW5 CUDA H.264。
ボケボケなうえ、でかいブロック状のものが見える。(左のほう)

MediaCoder CUDA H.264。
左のほう特大の変なブロックが見える…どっからきた…

わかりにくい場合は、やはり画像をタブで開き、タブを切り替えながら見ていくといいと思う。
で、わかってはいた(っていうか予想はしていた)ことだが、CUDAエンコの画質残念杉。これは静止画での比較だけど、動画で見てみるともっと動きの大きいところでは、猛烈に破たんする。
TMPEGEnc VMW5のCUDAは、そもそもCBRとVBRしかない(しかもVBRは止まってしまうのでCBRしか使えなかった)のが問題で、品質基準がない点は問題。MediaCoderのCUDA H.264は量子化量(QP)を指定できるけど、画質的にはTMPEGEnc VMW5のCUDAより悪くなっている。その他のソフトのCUDAエンコーダは使えなかったし…
ハードウェアエンコというと、あとはSpursEngineとかあるけど、あれもPowerDirector9同様、自由に出力解像度を設定できなかったような気がする(持ってないのでわかんないけど)。画質もそんなによくはない…らしいし。
話が少しずれるけど、ほかのエンコードソフト使ってみて思ったのはTMPEGEncはやっぱり使いやすいし、いろいろ便利だということ。MediaEspressoとか読み込んですらくれないし…
あとハードウェアエンコというと、TMPEGEnc VMW5の対応しているSandyBridgeのハードウェアエンコかな…ここ(リンク>>)にIntel Media SDKを使ったレビューが載っていて、x264の2倍速いよ的なことが書いてあるけど、x264の設定はどんな風なのかとか、エンコード後の画質はどうなのかとか全く触れてないから、ほとんど参考にならない。x264の速度なんて設定次第でどうとでもなるんだし。ぶっちゃけ--me tesaとか--ref 16とか使えばいくらでも遅くできる。もちろん、これはCPUのレビュー記事で、SandyBridgeでこんなこともできるっていう紹介ができているのだからこの記事としては十分だろうけど。
というわけで、やっぱx264は優秀なんじゃないだろうか。速度と画質のバランスはオプションで結構自由に設定できるし。うん。え…オプションが多すぎてわからん?「パフォーマンス」の「やや遅い」とか「やや速い」とか使いましょう。だいたいはそれで大丈夫で問題ない。
GPUはフィルタリングかな、やっぱり。私はAviutlでノイズ除去フィルタnl-meansのGPU版でGPUを使おうと思う。
ここまで読んでくれた人、長文読んでくれてありがとうです。
おまけその1。
BitrateViewerでビットレートの分布が見える。いずれもクリックで拡大。
TVMW5 x264 HQ

TVMW5 x264 MQ

TMPEGEnc 4 MainConcept H.264

TVMW5 Divx

TVMW5 CUDA H.264。CBR…だなあ、やっぱり。VBRはどうして動かないんだか…

MediaCoder CUDA H.264

こうしてみると、x264は若干メリハリのついた容量配分になっているようだ。
おまけその2
あとは参考程度にx264のHQ,MQ,LQのオプションをコマンドライン的に書いておく。色空間とかのオプションは省略。
HQ
かなり重めの設定。
--preset slow --crf 23 --aq-mode 0 --qcomp 0.7 --rc-lookahead 60 --scenecut 60 --min-keyint 4 --keyint 300 --subme 9 --merange 32 --ref 6 --trellis 2 --no-fast-pskip --no-dct-decimate --nal-hrd vbr --vbv-maxrate 17500 --vbv-bufsize 17500
MQ
本当は--me umhをつけたほうがいいかもしれないけど…
--preset fast --crf 23 --aq-mode 0 --scenecut 60 --min-keyint 4 --keyint 300 --ref 4 --nal-hrd vbr --vbv-maxrate 17500 --vbv-bufsize 17500
LQ
やたら速い。
--preset veryfast --crf 23 --aq-mode 0 --partitions p8x8,b8x8 --scenecut 60 --min-keyint 4 --keyint 300 --bframes 2 --b-pyramid 0 --mixed-refs --ref 2 --nal-hrd vbr --vbv-maxrate 17500 --vbv-bufsize 17500
あとは--crfをいじって1000kbpsに近づくよう調整。
スポンサーサイト