网页版 B 站导致 CPU 占用高的原因分析与解决方案
最近在使用 Chrome 浏览器浏览 哔哩哔哩视频(以下简称B站)时发现 CPU 占用率非常高,虽然家中使用的只是 18 年比较低端的一款游戏本,但是处理器也是 Intel 与 AMD"核战"开始后的产物,在线看个视频应该不能构成什么压力才对。
分析
通过任务管理器可以看到在播放视频的时候 CPU 占用很高,但是 GPU 占用却非常低,这应该是没有正确调用硬件解码造成的,查看视频信息,看见了 hev1 编解码器,我猜测应该是 B 站在长达一年多的测试后确认了 HEVC 播放的稳定性,为了降低网络带宽成本和缓解高峰期播放卡顿的问题,将默认编码修改为 HEVC 了。
上网查询的结果进一步验证了我的猜想,Chrome 果然不支持 HEVC 硬解,播放 HEVC 视频只能调用 CPU 进行软解。不只是 Chrome,整个桌面端只有苹果的 Safari 支持(注:对于部分设备预装了 HEVC decoder 的设备,微软 Edge 浏览器是可以硬解的)。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。
参考
Chrome / Egde 上为 B 站启用 HEVC 硬解
Can I use hevc ?