328 words
2 minutes
解决Zen 浏览器上播放Bilibili 视频卡顿

OS: Arch Linux
WM: niri-wm
Graphic: Intel Xe 96 EU (i915)

wayland环境下, 使用zen 浏览器播放哔哩哔哩网页端视频会卡顿, mpv播放很顺畅. 究其原因是VAAPI 解码走了 XWayland 的 GL 路径, i915 在 XWayland 下硬解调度异常.

此问题并非个例

来源在说什么
Mozilla Bug 1957284Iris Xe + Wayland:FF/Chromium 不用 VAAPI 或卡死首帧;mpv / vainfo 正常
ArchWiki · Firefox 硬解WebRender、VAAPI、必要时 force;HEVC 要足够新的 Firefox
ArchWiki · Chromium 硬解靠 flags / Wayland Ozone;上游不官方支持,社区自救
Arch BBS · Chromium VAAPI从 2019 开到现在的长帖,Intel 用户反复出现
Arch BBS #281398Linux 上 Firefox 曾默认 blocklist 硬解,要 force-enabled

以下修改配置实现走wayland协议硬解

Zen 配置#

当前 profile 的 user.js(~/.zen/<profile>/user.js,改完完全退出 Zen 再开):

user_pref("media.ffmpeg.vaapi.enabled", true);
user_pref("media.hardware-video-decoding.force-enabled", true);
user_pref("gfx.webrender.all", true);
user_pref("media.ffmpeg.hevc.enabled", true);
user_pref("media.rdd-ffmpeg.enabled", true);
widget.dmabuf.force-enabled
MOZ_ENABLE_WAYLAND=1

验收:aboutHARDWARE_VIDEO_DECODING: SuccessfulCompositing: WebRender

确认硬解#

播放 B 站时跑:

# 找到 rdd 进程
pid=$(pgrep -f 'rdd' | head -1)
[[ -z "$pid" ]] && { echo "未找到 rdd,正在播视频吗?"; exit 1; }
echo "=== rdd PID $pid ==="
rg -q 'iHD_drv_video' /proc/$pid/maps 2>/dev/null && echo "✓ iHD 已加载" || echo "✗ iHD 未加载"
rg -q 'libva' /proc/$pid/maps 2>/dev/null && echo "✓ libva 已加载" || echo "✗ libva 未加载"
ls /proc/$pid/fd 2>/dev/null | rg -q 'dri|render' && echo "✓ GPU 节点已开" || echo "✗ GPU 节点未开"

或用日志:MOZ_LOG=“FFmpegVideo:5” zen-browser 搜 VA-API。

解决Zen 浏览器上播放Bilibili 视频卡顿
https://jianlongliu.github.io/posts/i915-hwdec/
Author
Jianlong Liu
Published at
2026-07-25
License
CC BY-NC-SA 4.0