Windows7でH.264インターレース動画をキレイに再生するには

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

You can leave a response, or trackback from your own site.

Leave a Reply

Powered by WordPress | Designed by: Free MMO | Thanks to Social Games, Game Music Soundtracks and MMORPG Wallpapers