Brave B 站直播预览卡顿排查
/ 7 min read
问题现象
在基于 Chromium 内核的 Brave 浏览器 中浏览 Bilibili 直播首页时,如果快速连续悬停多个直播封面以触发网页自带的「小窗微型预览」,连续预览几个直播间后,浏览器会突然陷入假死状态,页面完全空白或无响应。卡顿持续大约 3 至 5 秒 后,浏览器自动恢复正常,网页重新渲染。
核心病因:AMD Video Upscale 与 Chromium GPU 进程冲突
经过排查,该问题的根本原因在于 AMD 显卡驱动的全局视频上采样功能(Video Upscale) 与 Chromium 引擎的高频媒体流渲染机制 产生了底层死锁。
网页端的高频媒体流轰炸
B 站直播封面的悬停预览,本质上是网页前端在鼠标移入时动态创建微型视频播放器并即时拉取低延迟流(如 HLS/WebM)进行解码。快速连续划过封面,意味着浏览器在极短时间内执行了多次「初始化播放器 → 申请显存 → 解码视频 → 销毁播放器」的循环。
驱动层的算法过载
当 AMD 显卡驱动开启了 Video Upscale 功能(针对 DirectX 11 应用程序的视频进行实时 AI 降噪/超分辨率放大)时:
- 驱动层监测到 Brave(D3D11 模式)频繁创建微型视频流,便会为每一个预览流分配算力、启动实时放大算法
- 由于鼠标移动极快,上一个算法尚未完全初始化或释放,下一个视频流便已强行塞入
- 这导致显卡驱动的视频处理队列瞬间爆仓、产生指令死锁
浏览器的断电重启保护
当显卡驱动死锁、停止响应达到一定时间(触发 Windows 的 TDR 机制),Chromium 内核会判定当前的 GPU 渲染进程已经「脑死亡」。为了防止整个浏览器甚至操作系统崩溃,Brave 会强制杀死当前的 GPU 进程并瞬间重新初始化:
- 卡顿空白的 3-5 秒:旧 GPU 进程被杀掉、新进程启动并重新分配资源的真空期
- 随后恢复正常:新的 GPU 进程接管渲染,浏览器复活
排查方案对比
| 排查/解决方案 | 原理 | 优点 | 缺点 | 评估结果 |
|---|---|---|---|---|
| 关闭浏览器硬件加速 | 彻底停用 GPU 渲染,改用 CPU 软件解码 | 绝对不会触发显卡驱动死锁,假死现象消失 | CPU 压力暴增,滑动网页掉帧,高码率视频消耗大 | 仅作排查工具(证明了确实是显卡/驱动的锅) |
| 修改 ANGLE 图形后端(切换至 D3D9 / OpenGL) | 将 Brave 内部的图形接口从默认 D3D11 降级或切换 | 绕过了 AMD 驱动中专门针对 DirectX 11 视频的超分辨率算法,完美解决卡顿,且保留 GPU 加速 | D3D9 技术较老,对现代 WebGL 2.0 3D 游戏或 8K HDR 视频的极限支持不及 D3D11 | 有效替代方案(若不想关闭 AMD 放大功能时适用) |
| 关闭 AMD 驱动中的 Video Upscale | 直接从源头切断引信,让显卡对 Brave 内的视频进行纯原生、不做额外处理的硬件硬解码 | 最完美、最干净。 Brave 得以运行在原生最强、代差最新的 D3D11 后端下,性能毫无损耗,且彻底根治 B 站预览假死 | 全局(或针对浏览器)失去了 AMD 的视频 AI 放大效果 | 🏆 最终采用方案 |
最终解决方案
如果你使用的是 AMD 显卡(如 Radeon 系列),并遇到了相同的卡顿故障,请按照以下步骤进行解决。
第一步:关闭 AMD 驱动的视频超分辨率
- 在 Windows 桌面空白处右键,打开 AMD Software: Adrenalin Edition(显卡控制面板)
- 点击右上角的设置齿轮,进入 游戏 (Gaming) → 显卡 (Graphics) 选项卡(或者进入「游戏」列表单独选中 Brave 浏览器进行定制)
- 找到 Video Upscale (视频超分辨率/上采样) 功能,将其切换为 禁用 (Disabled)
第二步:保持 Brave 浏览器最佳性能设置
- 打开 Brave 浏览器,确保 设置 → 系统 中的 「在可用时使用图形加速」 保持 开启 状态
- 在地址栏输入
brave://flags,搜索Choose ANGLE graphics backend,确保其处于 Default 状态(即原生的 D3D11 模式) - 重启浏览器
经验总结
在现代微机环境中,很多由于显卡驱动、浏览器内核迭代引入的「全局画质增强/AI 脑补」扩展功能(如 AMD Video Upscale、NVIDIA RTX Video Super Resolution),在面对高频创建/销毁 DOM 节点及媒体流的现代复杂 Web 2.0 网站(如 B 站、Twitch 首页)时,极易因高频初始化导致驱动层队列溢出。
遇到此类奇葩假死故障时,「如无必要,勿增实体」。直接去显卡控制面板关闭对应的实时视频润色算法,让浏览器回归原生、纯净的 D3D11/D3D12 硬件加速,通常是兼顾极速性能与绝对稳定的最优解。