2016年1月3日日曜日

YouTube 動画でハードウェアアクセラレーションを利用する方法【YouTube が重い場合】

GPU (CPU 内蔵グラフィックスを含む) には動作再生支援用のデコーダーが搭載されていることがあります。

CPU 性能が低く、ソフトウェア再生では高品質な動画を滑らかに再生できない PC であっても、そういったハードウェアのデコーダーを利用すれば動画を滑らかに再生できることも多いです。

まずは、YouTube 動画を視聴するのにハードウェアアクセラレーションを利用する利点と意外な欠点を挙げてみましょう。

利点

  • CPU 利用率を抑えられる。
  • 通常、CPU によるソフトウェア処理より消費電力が低い。より長いバッテリー寿命を期待できる。
  • GPU のデコーダーには高画質化機能が搭載されていることがある。

欠点

  • ブラウザーにもよるのかもしれませんが、例えば Google Chrome で YouTube 動画を視聴していると、CPU によるソフトウェア処理ではタブ切り替えなどで動画の画面から隠れて見えない部分は上手に処理をさぼってくれたりしますが、ハードウェアデコードでは常にデコーダーが使用される状態になります。
  • ハードウェアの能力の限界を超えるような高画質動画をデコードさせた際の破綻の仕方に難ありです。ソフトウェア処理でデコードが追い付かない場合はコマ落ちするだけですが、ハードウェアデコードではちょっとでも追いつかないとバグることがあります。そういった場合に自動的にソフトウェアデコードに切り替わるブラウザーもありますが、そうでないブラウザーもあります。バグるとページをリロードしないといけなくなったりします。したがって、ハードウェアデコードを利用する場合は自分のハードウェアのキャパシティを知っておいて画質を選択する必要があります。

YouTube でハードウェアアクセラレーションを利用する方法

現在販売されているハードウェア (GPU など) とソフトウェア(ブラウザーなど)の組み合わせでは、ほとんどの場合デフォルトでハードウェアアクセラレーションが有効になっているはずです。

基本的には、ハードウェアアクセラレーションが利用できる場合のみ利用され、利用できないと判断された場合はソフトウェア処理になると思います。

そしてどんな場合に利用されるかですが、これはまず YouTube 動画のコーデックを GPU のデコーダーがサポートしている必要があります。

たとえば、YouTube では現在、VP9 コーデックをサポートしている Google Chrome や Mozilla Firefox といったブラウザーでは VP9 がデフォルトです。しかし、たとえば多くの NVIDIA 製 GPU は VP9 のデコードをサポートしていません。

VP9 はフリーで高効率なコーデックですが、このコーデックをサポートしているデコーダーを搭載した GPU はあまり多くありません。インテルの比較的新しい CPU 内蔵グラフィックスに一部存在する程度です。

一方、H.264 (AVC) はかなり古いモデルまで含め多くの GPU にデコーダーが搭載されています。

そういった GPU でハードウェアデコードを利用するには、YouTube 動画のコーデックを H.264 などの一般的にサポートされているコーデックに切り替える必要があります。

切り替え方ですが、h264ify という VP9 が利用されないようにするプラグインがあります。

ブラウザーを変えるのもいいでしょう。現在のところ Internet Explorer や Edge といったマイクロソフト製のブラウザーではデフォルトで VP9 がサポートされておらず、こういったブラウザーで視聴すると AVC が使用されるため、デフォルトでもより多くの環境でハードウェアアクセラレーションが利用されると思います。

ブラウザーによる挙動の違い

これは非常に大きな要素です。

例えば IE や Edge ではハードウェアアクセラレーションが利用可能だと、ハードウェアの能力を大きく超えるような高画素動画をデコードさせてもまったくソフトウェア処理に切り替わりません。デコードが追い付かないとこうなるんだ、という様子を観察できます。

Firefox や Chrome では少しでも異常を検出するとすぐにソフトウェアデコーダーに切り替わってしまいます。ハードウェアの能力が十分余っていても、一時停止を使ってクロックが下がった後に再生を再開すると、それだけで能力不足と判断されるのか、ソフトウェア処理になってしまいます。

バッテリー寿命などの関係でハードウェアアクセラレーションにこだわる必要がある場合、うかつに一時停止もできません。

ハードウェアアクセラレーションが効いているかどうか確認する方法

GPU-Z というツールが便利です。
たとえば NVIDIA 製 GPU なら Video Engine Load を観察します。使われていなければ完全に 0 に張り付くと思います。



この動画はこちらです。
Fire and Embers in 4K - free stock footage 

0 件のコメント:

コメントを投稿