最近看了不少关于 B 站硬上 HEVC 的讨论,主要就是集中在使用 wasm 强行软解 HEVC/AV1 导致耗电和 cpu 高负载,B 站官微宣称会判断性能,我理解就是只用硬解。
我查到的是 js 可以用 MediaSource.isTypeSupported 这个 API 检查浏览器是否支持某种视频编码,但这个 API 并不会反馈是否支持硬解,如果不硬上,那在 Edge 尝试播放 HEVC 就有这几种情况。
- 浏览器不支持( Chromium ,Firefox ),API 返回 false ,回落到 AVC ,硬上就用 wasm 解码;
- 硬件不支持或缺少解码器,浏览器支持,情况同 1 ;
- 硬件不支持但有解码器,浏览器支持,API 返回 true ,使用解码器软解;
- 硬件支持,有解码器,浏览器支持,API 返回 true ,完美硬解。
这里支持的浏览器为旧 Edge 和近期的新 Edge ,解码器为商店 HEVC 视频扩展,收费版支持软解,免费版不支持。 可以看到即使不用 wasm ,也没法保证 HEVC 一定是硬解的。AV1 就更麻烦了,Chromium 系和 Firefox 都内置解码器,API 都会返回 true ,但根本没法判断能不能硬解。
是不是就没有办法准确判断了?