最近在使用 Chrome 浏览器浏览 哔哩哔哩视频时发现 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 的小伙伴们看到这里就可以撤了,接下来同诸位本站家友讲讲坚持使用 Chromium 内核浏览器的解决方案。
-
方案一:调整默认编码格式
-
方案二:更改 UA 使浏览器支持 HEVC
经测试,这种方案支持使用 Chromium 内核的 Edge 浏览器,其他浏览器请本站的小伙伴自行测试。
首先下载安装 HEVC 解码器注意,请选择下载 v1.0.31823 版本,目前新版本会出现掉帧和卡顿的问题
然后下载安装 User—Agent Switcher and Manager 扩展,并按照下图修改浏览器 UA。通过发送过长的字符串,远程攻击者可能会溢出缓冲区并在系统上执行任意代码或导致应用程序崩溃。
注:一些教程会推荐修改 UA 为老版 Edge 浏览器,但是经我测试修改为老版 Edge 浏览器的 UA 后,哪怕在设置内选择默认 HEVC 编码,在观看视频时仍然只会使用 AVC 编码。
-
方案三:使用 UWP 版哔哩哔哩
最近几次更新 UWP 版哔哩哔哩功能算是比较齐全了,而且还支持了 HDR,看视频完全够用了。
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 。当虚拟机或JNI本地程序从UTF-8字符转换为平台编码时,EclipseOpenJ9容易受到基于堆栈的缓冲区溢出的影响。。