網頁版 B 站導致 CPU 占用高的原因分析與解決方案

最近在使用 Chrome 瀏覽器瀏覽 嗶哩嗶哩視頻(以下簡稱B站)時發現 CPU 占用率非常高,雖然傢中使用的隻是 18 年比較低端的一款遊戲本,但是處理器也是 Intel 與 AMD“核戰”開始後的產物,在線看個視頻應該不能構成什麼壓力才對。

 

  分析

  通過任務管理器可以看到在播放視頻的時候 CPU 占用很高,但是 GPU 占用卻非常低,這應該是沒有正確調用硬件解碼造成的,查看視頻信息,看見瞭 hev1 編解碼器,我猜測應該是 B 站在長達一年多的測試後確認瞭 HEVC 播放的穩定性,為瞭降低網絡帶寬成本和緩解高峰期播放卡頓的問題,將默認編碼修改為 HEVC 瞭。

  上網查詢的結果進一步驗證瞭我的猜想,Chrome 果然不支持 HEVC 硬解,播放 HEVC 視頻隻能調用 CPU 進行軟解。不隻是 Chrome,整個桌面端隻有蘋果的 Safari 支持。HEVC 也不是啥新鮮玩意瞭,全球瀏覽器市場占用率第一的 Chrome 竟然還不支持,進一步搜索發現,原來是因為 MPEG-LA 和 HEVC Advance 專利池伸手太黑,給谷歌和蘋果報價太高,最終隻有財大氣粗的蘋果選擇瞭交錢。而谷歌選擇走自己的路,拉上瞭一大幫對高額專利授權費不爽的科技公司開始大力發展與推廣 AV1 去瞭。

  解決方案

  說回正題,現在知道瞭 CPU 占用高的原因,這下解決起來就簡單多瞭,那就是去買一臺 Mac(誤),準備掏錢買和正在用 Mac 的小夥伴們看到這裡就可以撤瞭,接下來同諸位IT之傢傢友講講堅持使用 Chromium 內核瀏覽器的解決方案。

  方案一(推薦):調整默認編碼格式

  這是最簡單粗暴,也是最高效的解決方法,使用 Chromium 內核瀏覽器的用戶目前隻有這一種解決方案。在播放器下方按照圖片步調整擇編碼格式為 AVC,如果使用的是 Intel Xe 核顯(大部分十一代和十二代處理器,除部分賽揚奔騰系列處理器)、使用 NVIDIA 30 系顯卡,以及使用 AMD RX6000 系列顯卡(RX6500XT 和 RX6400 除外)建議選擇更省帶寬的 AV1 編碼格式。

  方案二:更改 UA 使瀏覽器支持 HEVC

  經測試,這種方案支持使用 Chromium 內核的 Edge 瀏覽器,其他瀏覽器請IT之傢的小夥伴自行測試。

  首先下載安裝 HEVC 解碼器。註意,請選擇下載 v1.0.31823 版本,目前新版本會出現掉幀和卡頓的問題(註意需要關閉微軟商店自動更新功能)。

  然後下載安裝 User-Agent Switcher and Manager 擴展,並按照下圖修改瀏覽器 UA。

  註:一些教程會推薦修改 UA 為老版 Edge 瀏覽器,但是經我測試修改為老版 Edge 瀏覽器的 UA 後,哪怕在設置內選擇默認 HEVC 編碼,在觀看視頻時仍然隻會使用 AVC 編碼。

  不想因為修改 UA 影響其他網站訪問可以按照下面步驟將“https://www.bilibili.com”添加進特定站點。

  方案三:使用 UWP 版嗶哩嗶哩

  最近幾次更新 UWP 版嗶哩嗶哩功能算是比較齊全瞭,而且還支持瞭 HDR,看視頻完全夠用瞭。(想要支持 HEVC 需要安裝 HEVC 擴展,並在設置裡手動開啟 HEVC)

  B 站在國內的視頻網站中可以算得上做的非常出色瞭,雖然為瞭節省帶寬修改瞭默認偏好為 HEVC,但是很顯然 B 站也註意到瞭 Chromium 內核這個市場占有率第一的內核無法硬解 HEVC 這個問題,隻有在 1080P 高碼率、1080P 以及更低分辨率下默認使用瞭 HEVC 編碼,在 1080P 60 幀、4K 以及更高的 8K 視頻下還是默認 AVC 格式,減輕對性能較差的處理器的解碼壓力;隻有在使用 Safari 瀏覽器下才會全程使用 HEVC 編碼。

  並且 B 站也比較快的跟進瞭 AV1 編碼,雖然目前用戶手中支持硬解 AV1 的硬件較少,但是 2021 年後發佈的新硬件支持的還算不錯,隻有少部分廠傢沒有跟進。退五千步來說 B 站至少將編碼格式的選擇權交給瞭用戶,稍加設置仍然可以使用 AVC 編碼,並沒有一刀切的強上 HEVC 或者 AV1。

閱讀更多: