FFmpeg啊,真的是天天都想搞个大新闻——你们看,这才一年没到,已经刷了俩大版本了,把版本号直接干到了6.0。
那咋办,打不过就加入呗,咱们Jellyfin x Manjaro系列也刷个版本号。
Jellyfin x Manjaro系列第三回只讨论了使用QSV中出现的部份问题;而让FFmpeg用上QSV编码器(手动挡)所介绍的安装方法实在曲折繁琐,只适用于我这样的“五菱高手”——自动挡才是大趋势,手动党难成大业!
说白了,就是缺一篇完整实现QSV加速、使用FFmpeg 6.0、方便快捷干净卫生的教程呗!
# 只要这样,再这样,再那样…
开个玩笑,其实,在Manjaro上使用QSV非常容易,因为你需要的、你想要的、你不要的软件包,都有大神半仙提前准备好了。
友情提示,本篇教程只适用于支持
intel-media-driver的Intel显卡,具体型号列表见Intel Media Driver GitHub仓库。
# 第一步:安装Intel显卡驱动
Intel显卡驱动包括驱动程序intel-media-driver和前端APIintel-media-sdk或onevpl。其中,较新的OneVPL仅支持11代及以后的核显/独显。
# 11代及以上
sudo pacman -S intel-media-driver onevpl-intel-gpu
# 其余型号
sudo pacman -S intel-media-driver intel-media-sdk
安装完成后,编辑/etc/profile.d/libva.sh,添加下面两行,告诉系统使用最新的iHD显卡驱动(即intel-media-driver),而不是已经过时的i965驱动,重启系统使配置生效:
LIBVA_DRIVERS_PATH=/usr/lib/dri
LIBVA_DRIVER_NAME=iHD
随后安装libva-utils查看驱动识别情况。
sudo pacman -S libva-utils
运行vainfo命令,如果出现类似下述的输出,则表示驱动已经安装成功。
$ vainfo
Trying display: wayland
Trying display: x11
error: can't connect to X server!
Trying display: drm
vainfo: VA-API version: 1.18 (libva 2.17.1)
vainfo: Driver version: Intel iHD driver for Intel(R) Gen Graphics - 22.5.2 (ccc137c92)
vainfo: Supported profile and entrypoints
      VAProfileNone                   : VAEntrypointVideoProc
      VAProfileNone                   : VAEntrypointStats
      VAProfileMPEG2Simple            : VAEntrypointVLD
      VAProfileMPEG2Simple            : VAEntrypointEncSlice
      VAProfileMPEG2Main              : VAEntrypointVLD
      VAProfileMPEG2Main              : VAEntrypointEncSlice
      VAProfileH264Main               : VAEntrypointVLD
      VAProfileH264Main               : VAEntrypointEncSlice
      VAProfileH264Main               : VAEntrypointFEI
      VAProfileH264Main               : VAEntrypointEncSliceLP
      VAProfileH264High               : VAEntrypointVLD
      VAProfileH264High               : VAEntrypointEncSlice
      VAProfileH264High               : VAEntrypointFEI
      VAProfileH264High               : VAEntrypointEncSliceLP
      VAProfileVC1Simple              : VAEntrypointVLD
      VAProfileVC1Main                : VAEntrypointVLD
      VAProfileVC1Advanced            : VAEntrypointVLD
      VAProfileJPEGBaseline           : VAEntrypointVLD
      VAProfileJPEGBaseline           : VAEntrypointEncPicture
      VAProfileH264ConstrainedBaseline: VAEntrypointVLD
      VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice
      VAProfileH264ConstrainedBaseline: VAEntrypointFEI
      VAProfileH264ConstrainedBaseline: VAEntrypointEncSliceLP
      VAProfileVP8Version0_3          : VAEntrypointVLD
      VAProfileVP8Version0_3          : VAEntrypointEncSlice
      VAProfileHEVCMain               : VAEntrypointVLD
      VAProfileHEVCMain               : VAEntrypointEncSlice
      VAProfileHEVCMain               : VAEntrypointFEI
      VAProfileHEVCMain10             : VAEntrypointVLD
      VAProfileHEVCMain10             : VAEntrypointEncSlice
      VAProfileVP9Profile0            : VAEntrypointVLD
      VAProfileVP9Profile2            : VAEntrypointVLD
如果你的电脑有多张显卡,那么直接运行
vainfo很可能会报错。此时不妨试试vainfo --display drm --device /dev/dri/renderD12x,将/dev/dri/renderD12x替换为正确的显卡文件路径。只要有任意一张显卡支持iHD驱动即可,FFmpeg通常会自动识别并使用其中支持QSV的显卡。
# 第二步:安装Intel OpenCL后端
Intel显卡驱动的OpenCL后端目前由intel-compute-runtime提供,用于将HDR视频转换为SDR播放,Manjaro官方源的版本较老,因此我们使用AUR源安装。
AUR软件源是一个软件包共享平台,用户可以自行提交发布软件包与安装脚本供其他用户使用。使用AUR软件源一般需要首先安装yay包管理工具。
sudo pacman -S --needed git base-devel yay
随后使用yay安装intel-compute-runtime。
yay intel-compute-runtime
在yay展示的各个选项中选择编译好的intel-compute-runtime-bin即可。安装完成后,可以使用clinfo命令查看是否安装成功。
# 第三步(也是最后一步):安装Jellyfin与Jellyfin FFmpeg
最新发布的Jellyfin 10.8.10修复了两个重要安全漏洞,并且推荐与jellyfin-ffmpeg6组合使用。
AUR已有编译好的jellyfin-bin软件包供下载,也有nyanmisaka上传的最新版jellyfin-ffmpeg6。
yay jellyfin-bin jellyfin-ffmpeg6
最后,使用systemd启动jellyfin,打开http://localhost:8096即可食用。
# 立刻启动,并配置开机自启
sudo systemctl enable --now jellyfin
在Jellyfin网页界面中进入Dashboard -> Playback,将硬件加速(Hardware Acceleration)设置为Intel Quick Sync (QSV)。
参照下图勾选转码相应功能。

Enable hardware decoding for:对以下视频格式开启硬件解码。应根据显卡实际支持情况进行选择。
Prefer OS native DXVA or VA-API hardware decoders:解码时使用DXVA或VA-API硬件解码,而不使用QSV加速。使用QSV解码出错时可以勾选。
Enable hardware encoding:开启硬件解码。需要勾选。
Enable Intel Low-Power H.264 hardware encoder与Enable Intel Low-Power HEVC hardware encoder:开启低功耗H.264/HEVC硬件编码器。9代以上的CPU可以尝试勾选这两个选项,以加速HDR转SDR播放。在12代核显上不需要额外进行配置,其他型号请看Jellyfin官方文档。
Allow encoding in HEVC format:允许使用HEVC格式编码视频。如果你用来观看视频的设备支持HEVC编码,则建议勾选。
参照下图勾选HDR色调映射(Tone Mapping)相关功能,用于HDR视频转SDR播放。

Enable VPP Tone mapping:VPP色调映射。效率比OpenCL更高,但仅支持HDR10,兼容性较差,不建议勾选。
Enable Tone mapping:OpenCL色调映射。建议勾选。
到此配置完成。
# 简单的是不是最好的
大环境总是去繁就简的。我小学的时候,家长接送孩子学的都还是手动挡。十年以后的今天,一眼望去,手动挡已经一车难觅。你问我手动挡和自动挡能做的事情有什么不同?我会说,差不离。但自动挡好上手,容易学,让更多的人能够在很短的时间里学会开车,成为自己的旅途的主人。
对于操作系统而言,同样如此——那些开着“自动挡”的操作系统在吸引用户方面具有天然的优势。但Linux不是轿车也不是巴士,而是载人航天——一个永远离不开“手动挡”的地方。Manjaro Linux正在迅速流失用户这个问题是一个悖论——Manjaro不是Steam OS,作为Linux发行版,它的目标不可能,也不应该是服务大多数人。它更像是一个带教员、掌门人,提供便捷的包管理系统,帮助对Linux真正感兴趣的人了解这个操作系统,并基于此了解计算机的工作原理。用户数量究竟多少并不重要,甚至用户的减少意味着有更多的用户已经“出师”,开始使用更加底层的Arch Linux,或者开始使用更加稳定的Linux发行版进行生产工作,甚至可能已经融会贯通,学会了在一些“自动挡”操作系统上实现各种“手动超控”。
或许,现在的我们离不开Manjaro,只是因为我们还是书生。
不如珍惜当下的简单,因为不知何时总要告别。