Windows 7になってからは、H.264のインターレース動画も、ソコソコのビデオカードを搭載していれば、ハードウェア・デコードを使ってデ・インターレース&60fps化されて滑らかに表示できるようになったと喜んでいたのだが、x264のr1995以降の新バージョンでは、MBAFFが本格的に実装されたせいか、crf値を大きくしてエンコードしたファイルを再生すると、Windows Media Playerでは時々派手にノイズが入るようになってしまった。
仕方なく、古いx264でエンコードしたりしていたが、新しいx264はAVXに本格的に対応したりして、かなり速くなっているため、できれば新しいx264を使いたい。
H.264のハードウェア・デコードはCPU負荷が少なくて良いものの、きちんと再生するにはまだ色々と問題があるようだ。
ちなみに、プログレッシブH.264では、どんなプレーヤーを使ってもまず問題はないが、インターレースはまだまだ問題だらけなのが困り者だ。
とにかく、標準のWindows Media Playerで問題があるときは、フリーで多機能なMedia Player Classic Home Cinema(以下MPC-HC)を使うと良い。
【簡単確実にキレイに再生する方法】
MPC-HCのなるべく新しいバージョンをインストールする。
表示→オプションメニューを選び、左から「内部フィルタ」を選んで、変換フィルタの「H264/AVC (DXVA)」のチェックを外す。
クリックで拡大
これで、x264でエンコードされたh.264のインターレース動画が、ソフトウェアでデコード再生され、さらにデ・インターレースされて60fpsで再生される。
CPU負荷は多少あるが、Sandy Bridgeであれば全く問題ないレベル(Core i7 2600Kで10数%程度のCPU負荷)で再生できる。
※Radeon HD 2000シリーズやGeForce 7000シリーズなど、古いビデオカードでは60fpsでの再生が重すぎて、うまく動かないことがある。60iの動画を滑らかに再生するためには、60fpsで再生できるだけのビデオカードの性能が必要である。そのようなときは最新の中級(1万円弱くらい)のビデオカードに交換すると良い。
【GPUのハードウェア・デコードを使って再生したい】
フルHDのH.264動画ともなると、Sandy Bridgeでも多少はCPU負荷があるので、せっかく最近のGPUにはハードウェアH.264デコーダがあるのだから、それを使って再生したいと思うものだ。
デコードが重いH.264動画をCPU負荷をほぼ0で再生できるのが魅力だ。
MPC-HCの再生→オプションメニューを選び、左から「内部フィルタ」を選んで、「変換フィルタ」のH264/AVCのチェックをつける。
クリックで拡大
これで、GPUのハードウェアデコードが可能な場合は、再生時に左下に「再生中[DXVA]」と表示される。
DXVAとは、Direct X Video Accelerationの略で、GPU内蔵のハードウェア・デコードを使って再生しているということだ。
ただ単に「再生中」とだけ表示されているときには、DXVAは使わずに再生されている。
これで、DXVAでH.264ファイルを再生させることができる。しかし、ビデオカードやドライバ、MPC-HCのバージョンによっては、まるっきりマトモに再生できないこともあるし、時々派手にノイズが入ったり、ほぼ正常に再生できるが、ソフトウェア・デコードと比べると、質が劣ることもある。再生の安定性や質はGPUの種類やドライバに依存する。
【デコーダを指定して、より高度に再生させたい場合】
各種動画フォーマットのデコーダとしては、ffdshowというものが有名である。
MPC-HCは、外部デコーダを指定して再生することができるので、ここではffdshowをインストールして、より高度に再生オプションを指定して再生させてみよう。
ffdshowをダウンロードし、インストールする。
しかし、通常のソフトウェアとは違い、コーデックであるため、それだけでは何も起こらない。
そこで、MPC-HCの表示→オプションメニューで、左から「外部フィルタ」を選び、右の「フィルタ追加」ボタンを押して、
- ffdshow DXVA Video Decoder (ffdshowのDXVA用ビデオデコーダ)
- ffdshow Video Decoder (ffdshowのソフトウェアデコーダ)
- Microsoft DTV-DVD Video Decoder (Windows7標準のビデオデコーダ)
の3つを追加する。
それぞれ、右側の「優先する」ラジオボタンを選び、再生に使用したいフィルタにチェックを入れる。
クリックで拡大
これで、再生に使用するフィルタをffdshowやWindows7標準のものなどを自由に選べる。
ffdshow DXVAの設定をスタートメニューから選び、H.264にチェックを入れる。
また、ffdshowビデオデコーダの設定から、出力を選び「インターレースフラグを出力メディアタイプに設定する」にチェックを入れて、手法とオーダーを自動にする。
クリックで拡大
これで、デコードをソフトウェアで行い、デ・インターレースをビデオカードのハードウェアに任せるので、60fpsで再生されて、滑らかに動いて見れるようになる。
あとは、MPC-HCで再生に使いたいデコーダを選んで、ffdshowの設定を好きに変えれば良い。
現時点で最も問題なくキレイに見れるのは、MPC-HCにて外部フィルタで「ffdshow Video Decoder」を選んだ時である。
また、ffdshow Video Decoderを用いると、SD動画をHD解像度にアップコンバートして再生するようなこともできる。
※ここでは、Windows 7 64bitを使い、MPC-HC, ffdshow等、全て64bit版を使用している。使用したバージョンは以下のとおりである。
・Media Player Classic – Home Cinema x64 1.5.2.3456
・ffdshow_rev3974_20110822_clsid_x64