StaZhu / enable-chromium-hevc-hardware-decoding

A guide that teach you enable hardware HEVC decoding & encoding for Chrome / Edge, or build a custom version of Chromium / Electron that supports hardware & software HEVC decoding and hardware HEVC encoding.
MIT License
1.24k stars 60 forks source link

Linux VaapiVideoDecoder HEVC 硬解码支持的现况总结 #74

Open FirstLieutenantJakeDunn opened 5 months ago

FirstLieutenantJakeDunn commented 5 months ago

TL;DR:

  1. Linux下目前 Chromium 的 AV1 和 HEVC 的实现只支持了 VAAPIVideoDecoder
  2. VAAPIVideoDecoder 需要 libva2 大于一定版本 (测试过的最低成功版本是 Debian 12 官方库下的 libva2_2.17.0-1) (测试过的最高失败版本是 Ubuntu 22.04.4 LTS 官方库下的 libva2_2.14.0-1) (libva2 版本过低可通过第三方库尝试升级 或 直接从 https://github.com/intel/libva.git 拉取源代码本地编译安装最新版)
  3. VAAPIVideoDecoder 需要启用 Vulkan 渲染
  4. VAAPIVideoDecoder 需要 mesa-vulkan-drivers 大于一定版本(使用 Mesa 的情况下) (测试过的最低成功版本是 Debian 12 官方库下的 mesa-vulkan-drivers_22.3.6-1+deb12u1) (Mesa 22.0 Released With Vulkan 1.3) (mesa-vulkan-drivers 版本过低建议直接更新换系统) 目前测试结果表现为需要实际安装的显卡驱动实现了 Vulkan 1.3 及以上版本,否则大概率不成功
  5. 需要 Chromium >= 124 (Electron >= 30) (使用 Intel Corporation CoffeeLake-S GT2 [UHD Graphics 630] 核显测试) 并且需要附加额外的启动参数: --use-gl=angle --use-angle=vulkan --enable-accelerated-video-decode --enable-features=Vulkan,VulkanFromANGLE,DefaultANGLEVulkan,VaapiIgnoreDriverChecks,VaapiVideoDecoder,PlatformHEVCDecoderSupport,UseMultiPlaneFormatForHardwareVideo
  6. 可能仅在 X11 环境下才行,Wayland 环境下未测试
  7. 目前的主流 Linux 发行版中,最低成功版本是 Debian 12 官方库下的 libva2_2.17.0-1, mesa-vulkan-drivers_22.3.6-1+deb12u1
FirstLieutenantJakeDunn commented 5 months ago

验证方法:

  1. 视频播放时 chrome://media-internals 中应该显示 kVideoDecoderName: VaapiVideoDecoder)
  2. chrome://gpu 中应该显示 Video Decode: Hardware accelerated, Video Acceleration Information 中应该显示显卡正确的解码能力, 例如: Video Acceleration Information

    Decoding : Decode h264 baseline : 16x16 to 8192x8192 pixels Decode h264 main : 16x16 to 8192x8192 pixels Decode h264 high : 16x16 to 8192x8192 pixels Decode vp9 profile0 : 16x16 to 8192x8192 pixels Decode vp9 profile2 : 16x16 to 8192x8192 pixels Decode hevc main : 16x16 to 8192x8192 pixels Decode hevc main 10 : 16x16 to 8192x8192 pixels Decode hevc main still-picture: 16x16 to 8192x8192 pixels

  3. chrome://gpu 中应该显示 Vulkan: Enabled
  4. vulkaninfo 显示 Vulkan Instance Version: 1.3.XXX
FirstLieutenantJakeDunn commented 5 months ago

经过不同版本测试后总结: 以下是使用 Intel Corporation CoffeeLake-S GT2 [UHD Graphics 630] 核显, 在 Chromium >= 124 (Electron >= 30) 下, 使用上文所述的附加参数启动, 可以正确调用 VaapiVideoDecoder 解码 HEVC 视频的系统及配套官方仓库软件版本: Debian 12 Kernel Version 6.1 libc6_2.36-9+deb12u4_amd64.deb libva2_2.17.0-1 mesa-vulkan-drivers_22.3.6-1+deb12u1 Ubuntu 24.04 LTS Kernel Version 6.8 libc6_2.39-0ubuntu8 libva2_2.20.0-2build1 mesa-vulkan-drivers_24.0.5-1ubuntu1 deepin V23 RC Kernel Version 6.6 libc6_2.38-6deepin3 libva2_2.20.0-2 mesa-vulkan-drivers_24.0.1-1deepin3 openKylin 2.0 Beta1 Kernel Version 6.6 libc6_2.38-lok6.9 libva2_2.20.0-ok1 mesa-vulkan-drivers_24.0.5-ok1

FirstLieutenantJakeDunn commented 5 months ago

对于 Intel 核显(使用 Intel Corporation CoffeeLake-S GT2 [UHD Graphics 630] 核显测试): 统信UOS桌面专业版AMD64(1070 HWE版本)支持:Intel、AMD等新一代硬件,提供最佳兼容性 UOS 20 1070 HWE Kernel Version 6.1.32 libc6_2.28.30-deepin1 libva2_2.14.0-1 mesa-vulkan-drivers_23.1.2.3-1 vainfo 可以显示解码能力,但 chrome://gpus 内不显示解码能力。 搭建编译环境依赖,并从 https://github.com/intel/libva.git 下载源代码,本地编译安装后 目前代码仓库 libva2_2.22 Electron = 22 或 Electron >= 28 可以正确调用 VaapiVideoDecoder 解码 HEVC 视频 23 <= Electron <= 27 尝试调用 VaapiVideoDecoder 解码报错后退回至 ffmpeg 软解码

maxkwok commented 3 months ago

对于 Intel 核显(使用 Intel Corporation CoffeeLake-S GT2 [UHD Graphics 630] 核显测试): 统信UOS桌面专业版AMD64(1070 HWE版本)支持:Intel、AMD等新一代硬件,提供最佳兼容性 UOS 20 1070 HWE Kernel Version 6.1.32 libc6_2.28.30-deepin1 libva2_2.14.0-1 mesa-vulkan-drivers_23.1.2.3-1 vainfo 可以显示解码能力,但 chrome://gpus 内不显示解码能力。 搭建编译环境依赖,并从 https://github.com/intel/libva.git 下载源代码,本地编译安装后 目前代码仓库 libva2_2.22 Electron = 22 或 Electron >= 28 可以正确调用 VaapiVideoDecoder 解码 HEVC 视频 23 <= Electron <= 27 尝试调用 VaapiVideoDecoder 解码报错后退回至 ffmpeg 软解码

你好,我正在测试摩尔线程的显卡,求教以下再统信下的chromium浏览器是编译安装还是下载deb包?