youtubeが重い?CPU使用率を下げるには

2020年10月24日

はじめに

パソコンが基本的にI7しかないですが、youtubeのCPU使用率が高いんじゃねと思う今日この頃。その原因と解決策を紹介します。

動画の画質について

皆さんはyoutubeの画質と言われたら何を想像しますか?おそらくギアマークにある144pとか720pだと思います。

それは動画の解像度であり綺麗さに直結する大きな要因の一つです。

しかし画質が大きくなると、通信量が大きく跳ね上がります。

これは感覚的に解ると思います。これは動画を提供している側からするととても大きな問題で、綺麗な動画を提供するために大きな設備を維持しなければいけません。これは天下のgoogleも同じです。

通信量を減らすために

通信量を減らすために画質を下げるのは本末転倒です。ニコニコかな?

この問題を解決するために、頭のいい人たちが、できるだけ画質を落とさず動画を圧縮する方法を考えました。これがコーディックと呼ばれるものです。

コーディックにはそれぞれ特性があり、一番普及しているh264やyoutubeで使用されるvp9があります。

一方その頃CPUは忙しい

コーディックを使用すると動画を圧縮できます。

しかし、これを見るためには解凍(元に戻す操作)しなければいけません。圧縮と解凍はコーディックで決められたアルゴリズム(計算方法)を用いて計算します。

さて計算するところはどこでしょう?

CPU君です。このコーディックで動画を計算する作業はとても大変で、フルHDだと解像度が1920x1080なので、これらが色情報(24bit(2を24回掛ける数))を持つのでとてもやばい量の計算をしなければいけません。

一方その頃のGPUくん

皆さんはGPUをご存知でしょうか?GPUの本来の機能はディスプレイの表示です。

基本設計として解像度が1920x1080の色情報(24bit)を簡単に扱えるようにしてあります。

なので、コーディックの計算が効率良くできます。動画再生支援って聞いたことありませんか?それがこれです。

対応しているコーディックはintelだと次のようになります。

Fixed-function Quick Sync Video format support
Cantiga Ironlake Sandy Bridge Ivy Bridge Haswell Broadwell Braswell Skylake Broxton Kaby Lake
MPEG-2 デコードのみ デコードのみ デコードのみ デコードのみ デコードのみ デコードのみ デコードのみ デコードのみ デコードのみ デコードのみ
H.264 非対応 デコードのみ 対応 対応 対応 対応 対応 対応 対応 対応
VC-1 非対応 非対応 デコードのみ デコードのみ デコードのみ デコードのみ デコードのみ デコードのみ デコードのみ デコードのみ
JPEG 非対応 非対応 非対応 デコードのみ デコードのみ デコードのみ 対応 対応 対応 対応
VP8 非対応 非対応 非対応 非対応 非対応 デコードのみ 対応 対応 対応 対応
H.265 非対応 非対応 非対応 非対応 非対応 非対応 デコードのみ 対応 対応 対応
H.265 10-bit 非対応 非対応 非対応 非対応 非対応 非対応 非対応 非対応 デコードのみ 対応
VP9 非対応 非対応 非対応 非対応 非対応 非対応 非対応 非対応 デコードのみ 対応[25]
VP9 10-bit 非対応 非対応 非対応 非対応 非対応 非対応 非対応 非対応 非対応 デコードのみ

https://ja.wikipedia.org/wiki/Intel_Quick_Sync_Video より引用

これに

対応(デコードも含む)していれば

CPUの代わりにGPUが計算してくれます。

nvidiaの対応表はこちらです

動画コーディックの種類が負荷の原因

上記で最低限の知識を紹介しました。では以下の画像をご覧ください。

1080p コーディック avc(h264)
1080p コーディック vp9

このスクリーンショットを撮影したのはSkylakeの世代です。

Skylakeはh264に対応していますがvp9には対応していません。つまりこれGPUが助けていないんですね。(debianで再生支援が聞いてるかは不明)

なのでh264はCPU使用率25~40%なのに、vp9だと60%になります。

Ivy Bridge のwindowsだと以下のようになります。

1080p コーディック h264
1080p コーディック VP9

つまり

VP9はh264より2~3倍CPUに負荷がかかります

ちなみにですが

z8350などのCherry TrailのATOMたちはBroadwellと同じGPUの世代です。

なので、youtubeが見れないとバカにされている彼らはh264であれば再生できます。(仕様上は)

ryzen3600+gtx 1660S の場合

2020/10/24の時点でvp9の動画再生支援が確認できました

時代遅れと指摘が合った気がしたのでおそらく最新の組み合わせで検証をしましたが、結論から言いますと、

現在VP9に対応したGPUでも動画再生支援は働きません

以下の画像のようにh264ではGPUが助けてくれますが、VP9は助けてくれていません。

結局の所VP9はCPU殴ってもらうしかないようです

youtubeのデフォルトコーディック変更方法

ではyoutubeでh264にすれば再生時のCPU使用率が下がることがわかりました。問題は、どうやって切り替えるかですが、それを自動でやってくれる

h264ify

というプラグインがあります

クローム版
https://chrome.google.com/webstore/detail/h264ify/aleakchihdccplidncghkekgioiakgal

ファイヤーフォックス版
https://addons.mozilla.org/ja/android/addon/h264ify/

これを有効にするとVP9を無効にしてくれます。動画画面を右クリックして詳細統計情報から確認しましょう。

codecs avcとなっていればできています。

デメリットとして、4K解像度を選択することができません。

最後に

なんでyoutubeでvp9が普及してないにもかかわらず使っているかというと、

googleがそれを使わせたいからです。

ではよいネットライフを