※重要
知識が浅いため色々と間違ってる可能性があるので
書いてあることは鵜呑みにせず厳しい目でチェックしてください。
※今更な感じもしますけど、自分がちゃんと理解できておらずエンコードスレで質問中なことをまとめ。
※間違ってる点があればコメントをいただけると、とてもありがたいです。
※調べれば調べるほど、これまでLevelとか全然気にせずエンコしてたのが恥ずかしくなってきました。/(^o^)\
PS3とかPSPとか携帯端末とか向けにエンコしてる人とか、ちゃんと勉強してエンコしてる人なら
refとかbframesとかが色々関わってくるのは常識なのだろうけど、
とにかくニコニコにアップして見れればいいやと適当にエンコしてたからなあ・・・。orz
※2011/10/18更新
・一覧表にて、レベル3.2についての記述と計算が抜けていたので追加してその結果を反映。
・表に解像度720x480、720x576、1024x576、1024x768、1440x1080を追加。
・自分でもテスト用動画をアップしてみたので、その動画一覧のマイリストへのリンクを追記。
・その他、記述をいくつか修正。
-----
FlashPlayerは、2010/6/10にリリースされたバージョン10.1から
H.264のハードウェアアクセラレーション(GPU再生支援)をサポートしています。
これを利用すれば、GPUがデコードを行なってくれるので、比較的貧弱なCPUでも
HDサイズのH.264動画をさくさくと快適に再生できるわけですね。
ハードウェアアクセラレーション機能は、FlashPlayerの再生画面を右クリックして「設定...」を選択し、
左下の「ディスプレイ」タブにある「ハードウェアアクセラレーションを有効化」のチェックボックスで
有効・無効を切り替えることができます。
(実際に有効・無効を切り替えるには、動画の再読み込みも必要になります。)
また、ハードウェアアクセラレーションを利用するには、使っているPCのグラフィックカード(チップ)が
H.264の動画再生支援をサポートしていることも条件となります。
まあ最近のPCであれば、多分サポートされていると思います。
(私が使っている5年前のノートPCはIntel945GMチップセットなのでサポートされていませんが・・・orz)
H.264の動画再生支援がサポートされているかどうかは、DXVACheckerというツールで調べることもできます。
AMD系のグラフィックカード(Radeonシリーズとか)なら「デコーダデバイス」の欄に
ModeH264_VLD_NoFGT_Flash
が出てくればOKで、それ以外なら
ModeH264_
で始まるのが出てくれば、多分サポートされてます。(自分で試せないのでかなりアバウト。)
ドライバが古いと出てこない可能性もあるので、サポートされているはずなのに出てこないという場合は
ドライバを最新のものにしてみるとよいかもしれません。(ただし自己責任でお願いします。)
さて、このハードウェアアクセラレーションですが、
場合によっては働かなかったり、映像が乱れてしまうことがあるようです。
そのあたりの参考情報が、以下の大百科記事やマイリストにまとめられています。
動画がおかしくなる方は大百科をクリック→とは- ニコニコ大百科
FLVENC2 ツール&画質テスト H264
ガラクタ置き場(互換検証)
大百科記事では、
ハードウェアアクセラレーション有効時に再生に問題が起きた場合は、FlashPlayerの
「ハードウェアアクセラレーションを有効にする」
のチェックを外したうえで動画を再読み込みする。
という対処方法が示されています。
ただし、そうするとGPUではなくCPUでデコード(ソフトウェアデコード)することになるため、
CPUの処理能力が低い場合は動画がカクついたりまともに再生できなかったりすることがあります。
上の記事やマイリスに入っているなかで、GPU再生支援で問題が起きることがあるらしいという動画を、
解像度 フレームレート プロファイル@レベル ref bframes
のパラメータつきで3つ貼っておきます。(MediaInfo 0.7.47 で調査)
映像がおかしくなるかどうかは環境次第だとは思いますが、
ハードウェアアクセラレーションを有効にした上で視聴してみてください。
(問題が起きた場合、問題が起きた動画と、使っているグラフィックカードをコメントで教えてもらえるとありがたいです。
勝手に動画を貼ってすみません。本当なら自分でテスト動画をアップすべきなんでしょうけど、
作ったとしても自分では確認できないもので・・・。)
2011/10/18追記:
自分でもテスト用の動画をアップロードしてみました。640x360 24fpsのもので、
まずいとされるエンコードオプションの値を少しずつ変えてみたものです。以下のマイリストからどうぞ。
(自作PC板のIntelスレやコメントの反応を見ると、少なくともIntel HD Graphics 2000or3000ではref=16のもので映像が乱れるそうです。
なお、低画質モードだとサーバー側で再エンコードされた映像を見ることになり、テストにならないのでご注意下さい。)
ハードウェアアクセラレーション(DXVA)テスト用動画リスト
動画1. 512x384 30fps High@3.0 ref=5 bframes=3
動画2. 1280x720 59.94fps High@L5.0 ref=16 bframes=16
動画3. 512x288 29.97fps High@5.1 ref=16 bframes=16
また、少し古い情報ですが、
H.264(AVC) + UVD(DXVA) / J-pro.info
x264 Encoding Options for Hardware Compatibility & DXVA - AVS Forum
を見ると、GPU再生支援を利用するためには、エンコード時にH.264 Levelの条件をしっかり守って
--levelでレベルを明示的に指定するといったことが大事になってきたりするようです。
更に
【ニコニコ動画】FLV/MP4エンコードスレ 53【質問】
で質問してみたところ、動き予測の参照距離(--ref)が16だとGPU再生支援が無効になったり
映像が乱れることがあるという話を教えてもらいました。
つまり、x264でのエンコード時に、ハードウェアアクセラレーション(GPU再生支援)が
きちんと働くように設定を行なうことが重要になってくるわけですね。
さて、ここからが本題です。
以上の情報を踏まえてニコニコ動画まとめWikiの推奨設定を見てみたところ、
レベルをきっちり守れず、refも16になってしまうケースがあることに気づきました。
これがどの程度問題になるのかはよくわかりませんし、実は全然問題ないかもしれませんが、
どうせならきっちりとした設定を考えてみたいと思い、今ある情報をまとめてみました。
長くなるので折りたたみます。
わからないことだらけですので、コメントなどいただければありがたいです。
(ここではなく「【ニコニコ動画】FLV/MP4エンコードスレ 53【質問】」のほうでも質問中なのでそちらでも。)
最近のコメント