Edge/Chrome为B站启用HEVC硬解和AV1硬解

发布于 2022-08-14  636 次阅读


本站仅使用CloudFlare作为CDN,推荐使用外网环境访问。

一.概念介绍

软解:软解就是用CPU来解码,需要CPU的性能与处理能力较强,但对流媒体格式兼容性比较好,软解过多的依赖CPU,对CPU的性能消耗非常大,强制开启软解会导致视频卡顿等问题。

硬解:硬解是要机器中的专门的解码芯片来完成,效率极高,质量因厂家的技术能力而定。

AVC(H.264):H.264是国际标准化组织(ISO)和国际电信联盟(ITU)共同提出的继MPEG4之后的新一代数字视频压缩格式。于2003年5月发布最早版本,最后一个技术改进发布于2013年4月。

HEVC( H.265/MPEG-H Part 2): 开始于2013年,HEVC能达到H.264/MPEG-4 AVC两倍之压缩率(等同于同样画面质量下比特率减少到了50%),可支持4K清晰度,最高清晰度可达到8192×4320(8K清晰度)。但是,HEVC是闭源的,而且专利费极高,所以使用了Chromium内核的Edge浏览器和Chrome浏览器并不默认支持HEVC硬解,目前仅有macOS和iOS的Safari浏览器支持HEVC硬解。

AV1: AV1是由开放媒体视频联盟开发的开放、免版税的下一代视频编码格式。它被设计为取代谷歌的VP9,并与H.265/HEVC竞争。AV1的目标是在VP9/HEVC上基础上提高约30%的编码效率。目前YouTube已经全面支持AV1。B站从2022年3月开始陆续将视频转码成AV1,但AV1硬解对于设备有较高的要求。

 

 

二.支持情况

1.浏览器支持

根据网站 https://caniuse.com/?search=hevc  我们可以看到浏览器对HEVC和AV1的解码情况

浏览器HEVC支持情况
浏览器HEVC支持情况

 

浏览器AV1支持情况
浏览器AV1支持情况

 

其中红色版本为完全不支持,黄色版本为在特定的系统版本或硬件上支持,绿色版本为支持

所以

  • Chrome仅可能(在硬件支持的情况下)开启 AV1 硬解,不可能开启HEVC硬解(原因是Chrome无法使用Windows的HEVC解码器,解决方法文中会讲)
  • Edge可以启用HEVC硬解和AV1硬解(在安装解码器的情况下,文中会讲)
  • 运行在macOS系统上的Safari浏览器可以开启HEVC硬解(划重点,稍后要用)
  • Windows下旧版Edge最后一版(Edge 18.19041  基于EdgeHTML内核)也可支持HEVC硬解(在安装解码器的情况下)
  • 国产浏览器都不支持 o_o ....

2.硬件支持

查询网站:

INTEL: https://bluesky-soft.com/en/dxvac/deviceInfo/decoder/intel.html

AMD: https://bluesky-soft.com/en/dxvac/deviceInfo/decoder/amd.html

NVIDIA: https://bluesky-soft.com/en/dxvac/deviceInfo/decoder/nvidia.html

 

省流:

  • 4代酷睿之后的intel核显、10系之后的N卡、RX470之后的A卡均可支持基础规格的HEVC硬解
  • av1硬解需要 11代桌面核显及以上、RTX3050及以上、RX6600及以上

 

如果电脑有核显和独显两个GPU,请确保你的浏览器运行在独显中
请确保你的硬件和使用的浏览器版本支持 HEVC/AV1硬解

 

三.为Edge启用HEVC硬解

根据 https://techcommunity.microsoft.com/t5/discussions/updated-dev-channel-build-77-0-211-3-is-live/m-p/745801#M6548   中Edge(build 77.0.211.3)的更新

Support for HEVC decoder has been added

之后的版本的Edge(基于Chromium内核)可以使用HEVC硬解

因为HEVC专利费的原因,Windows系统并不自带HEVC解码器,需要在Microsoft Store中下载HEVC 视频扩展(付费)

HEVC拓展
HEVC拓展

如果不想付费也可前往 https://www.free-codecs.com/hevc_video_extension_download.htm 下载,此处下载的HEVC 视频扩展与在微软商店下载的一致

HEVC视频拓展的31823版本会有画面抖动问题,50361版本会有10s跳帧问题,此处下载最新版本2.0.51121

2.0.51121版本
2.0.51121版本

安装后重启Edge浏览器,因为新版Edge浏览器存在后台运行的情况,所以可能会是无效重启,推荐直接重启电脑。

 

按理说,此时我们已经安装好了HEVC拓展,那么Edge就可以HEVC硬解了,那么我们打开B站的8K演示片,神奇!没有播放策略选择!

你的播放策略呢?让他上前来
你的播放策略呢?让他上前来
实际使用的编码为AVC
实际使用的编码为AVC

 

那么,问题出在哪里呢?根据查到的消息,为了防止HEVC硬解导致的兼容性问题,B站干脆一刀切,基于Chromium内核的Edge浏览器关闭了此功能...

因为Edge浏览器可以调用Windows的HEVC解码器,所以说有相当一部分用户因为安装其他应用时捆绑安装了HEVC解码器,所以说此时是可以进行硬解的,但是由于配置、兼容性等等原因开了HEVC硬解体验不如AVC甚至HEVC软解,故直接提供AVC流。而同样是基于Chromium内核的Chrome为什么有播放策略的选择,倒是很奇怪,是因为Chrome本就不支持HEVC硬解没有后续的问题吗?

所以目前需要解决的问题是 让B站认为我用的不是基于Chromium内核的Edge,但又是支持HEVC硬解的浏览器。

我们上文中提到,符合以上要求的浏览器是

  • 运行在macOS系统上的Safari浏览器可以开启HEVC硬解
  • Windows下旧版Edge最后一版(Edge 18.19041  基于EdgeHTML内核)也可支持HEVC硬解

所以我们只需要更改浏览器的User-Agent

访问Edge扩展商店,找到User-Agent Switcher这个扩展,当然Chrome商店也有

直达链接 https://microsoftedge.microsoft.com/addons/detail/useragent-switcher/kfhpbcjoekokcapipficfgjadanhfmjb

在启用拓展后,进入拓展的设置,手动添加UA

拓展设置
拓展设置

macOS系统,Safari 14.1的UA为:(推荐使用)

Mozilla/5.0 (Macintosh; Intel Mac OS X 11_3) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1 Safari/605.1.15

 

Win10系统,Edge 18.19041的UA为:

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.19041

 

添加好之后,在左侧列表选择Permanent Spoof List,在Domain填入 bilibili.com  ,User-Agent String中选择你刚刚创建的浏览器UA,之后点击Add即可

Permanent Spoof List
Permanent Spoof List

 

再次访问B站时,可以注意到插件的图标,已经自动启用了Safari 14.1的UA ,这里插件图标的 S14 是创建UA时填写的 Indicator Flag 项

插件图标
插件图标

好的,那么我们的浏览器看起来已经是高贵的Safari浏览器了,然后前往演示片(非大会员也可体验8K清晰度)!

https://www.bilibili.com/video/BV1qM4y1w716

有播放策略力
有播放策略力

 

HEVC编码
HEVC编码

回来了,都回来了(

 

虽然说使用了HEVC,但是到底是软解还是硬解呢?此时我们播放这支8K视频,如果使用的是软解,那么CPU使用率会暴涨,反之显卡的视频解码就应该有波动

GPU视频解码
GPU视频解码

可以看到视频解码从一开始的毫无波动到有数值,CPU也没有爆炸,说明成功啦!

 

四.为Chrome/Edge启用AV1硬解

根据前文浏览器对AV1的支持,可知Chrome就直接支持AV1硬解,就看硬件是否支持,而Edge则需要额外安装AV1 Video Extension

 

还是一样打开Microsoft Store ,搜索AV1 Video Extension ,安装即可(免费)

AV1 Video Extension
AV1 Video Extension

安装之后重启,即可体验AV1啦

 

访问B站8K演示片,播放策略选择AV1!

https://www.bilibili.com/video/BV1qM4y1w716

如果按照 为Edge启用HEVC硬解 这部分教程为bilibili.com设置了Safari UA,请改为Chrome/Edge的UA,因为Safari不支持AV1硬解,即使播放策略选择AV1优先,也只会得到HECV的视频流!
AV1编码
AV1编码

再查看任务管理器,GPU的Video Decode也出现了波动,CPU没有爆炸,AV1硬解成功!

 

五.为Chrome启用HEVC硬解

前文说到Chrome无法使用Windows的HEVC解码器,自然无法实现HEVC硬解,那么有没有什么解决办法呢?

当然有!!!

国内开发者团队经过长达2个月的开发,在2022年4月,为Chrome完整实现了支持macOS,Window,Linux HEVC硬解

Chrome 104正式版+启动参数即可启用HEVC硬解,在快捷方式中的 目标 空一格然后添加启动参数

--enable-features=PlatformHEVCDecoderSupport

重启浏览器后我们可以访问 chrome://gpu 进行查看

HEVC已支持
HEVC已支持

 

详情可访问 https://github.com/StaZhu/enable-chromium-hevc-hardware-decoding

根据开发者@StaZhu的对比

相比Windows的Edge,存在如下优势:

  1. 无需安装HEVC视频扩展插件.
  2. 可完美支持所有类型的HDR
  3. 具备 Windows 7 等老系统和 HEVC Rext Profile 支持软解的优势。

相比macOS的Safari,存在如下优势:

  1. 和Safari相同的HDR支持
  2. 格式兼容性更好,Safari放不了的 Chromium 都可以播放
  3. 具备 macOS 10.12 等老系统和 HEVC Rext Profile 支持软解的优势。
  4. Chrome系插件和浏览器兼容性支持

 

六.私货

等有了再写

 


和光同尘 与时舒卷