愛伊米

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

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

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

分析

透過任務管理器可以看到在播放影片的時候 CPU 佔用很高,但是 GPU 佔用卻非常低,這應該是沒有正確呼叫硬體解碼造成的,檢視影片資訊,看見了 hev1 編解碼器,我猜測應該是 B 站在長達一年多的測試後確認了 HEVC 播放的穩定性,為了降低網路頻寬成本和緩解高峰期播放卡頓的問題,將預設編碼修改為 HEVC 了。

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

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

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

解決方案

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

方案一(推薦):調整預設編碼格式

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

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

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

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

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

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

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

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

注:一些教程會推薦修改 UA 為老版 Edge 瀏覽器,但是經我測試修改為老版 Edge 瀏覽器的 UA 後,哪怕在設定內選擇預設 HEVC 編碼,在觀看影片時仍然只會使用 AVC 編碼。

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

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

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

最近幾次更新 UWP 版嗶哩嗶哩功能算是比較齊全了,而且還支援了 HDR,看影片完全夠用了。(想要支援 HEVC 需要安裝 HEVC 擴充套件,並在設定裡手動開啟 HEVC)

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

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

B 站在國內的影片網站中可以算得上做的非常出色了,雖然為了節省頻寬修改了預設偏好為 HEVC,但是很顯然 B 站也注意到了 Chromium 核心這個市場佔有率第一的核心無法硬解 HEVC 這個問題,只有在 1080P 高位元速率、1080P 以及更低解析度下預設使用了 HEVC 編碼,在 1080P 60 幀、4K 以及更高的 8K 影片下還是預設 AVC 格式,減輕對效能較差的處理器的解碼壓力;只有在使用 Safari 瀏覽器下才會全程使用 HEVC 編碼。

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

參考

Chrome / Egde 上為 B 站啟用 HEVC 硬解

Can I use hevc ?