硬件加速

硬件加速在智能手机上很常见,可以使用手机处理器中的GPU对播放视频进行硬件解码,相比软件解码,耗电低,手机不易发烫。

Linux下的浏览器

众所周知Linux下的Chromium Chrome Firefox都没有开启视频播放硬件加速。得益于Chromium的开源,有人做出了对VA-API支持的chromimu-vaapi,前段时间我已将自己的笔记本重装为Arch Linux,安装chromium-vaapi变得简单。

  1. 添加archlinuxcn源,可以选择一个国内镜像,例如163

    1
    2
    sudo echo "[archlinuxcn]
    Server = http://mirrors.163.com/archlinux-cn/$arch" >> /etc/pacman.conf
  2. 安装archlinuxcn的PGP Keys

    1
    sudo pacman -Syy && sudo pacman -S archlinuxcn-keyring
  3. 安装chromium、驱动、检测VA-API工具 ,由于我的笔记本CPU是ADM安装是这样的,Intel可以参照ArchlWiki相对应的方法安装必要的驱动

    1
    sudo pacman -S chromium-vaapi libva-mesa-driver libva-utils
  4. 执行vainfo命令,查看输出,VA-API是否工作正常

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    vainfo: VA-API version: 1.7 (libva 2.7.1)
    vainfo: Driver version: Mesa Gallium driver 20.0.7 for AMD RAVEN (DRM 3.36.0, 5.6.13-arch1-1, LLVM 10.0.0)
    vainfo: Supported profile and entrypoints
    VAProfileMPEG2Simple : VAEntrypointVLD
    VAProfileMPEG2Main : VAEntrypointVLD
    VAProfileVC1Simple : VAEntrypointVLD
    VAProfileVC1Main : VAEntrypointVLD
    VAProfileVC1Advanced : VAEntrypointVLD
    VAProfileH264ConstrainedBaseline: VAEntrypointVLD
    VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice
    VAProfileH264Main : VAEntrypointVLD
    VAProfileH264Main : VAEntrypointEncSlice
    VAProfileH264High : VAEntrypointVLD
    VAProfileH264High : VAEntrypointEncSlice
    VAProfileHEVCMain : VAEntrypointVLD
    VAProfileHEVCMain : VAEntrypointEncSlice
    VAProfileHEVCMain10 : VAEntrypointVLD
    VAProfileJPEGBaseline : VAEntrypointVLD
    VAProfileVP9Profile0 : VAEntrypointVLD
    VAProfileVP9Profile2 : VAEntrypointVLD
    VAProfileNone : VAEntrypointVideoProc
  5. 打开chromium,输入chrome://flags,开启#ignore-gpu-blacklist,开启后会提示重启chromium,重启即可。

  6. 由于YouTube的视频默认输出为 VP8/VP9,需要安装扩展h264ify

  7. 打开 chrome://gpu 查看Video Decode是否为Hardware accelerated,打开YouTube播放一个视频,打开 chrome://media-internals 查看Player Properties 中的video_decoder

    • 硬件解码: MojoVideoDecoder, GpuVideoDecoder;
    • 软件解码: VpxVideoDecoder, FFmpegVideoDecoder.

这里描述的相关操作来自于https://wiki.archlinux.org/index.php/Chromium#Hardware_video_acceleration