
如果前面硬件转码已经起作用,这一步的升级是非必须的,老苏只是想看看升级后会不会有什么变化而已,比如让 Jellyfin 支持 Intel Quick Sync ,据说 Intel Quick Sync 提供了更好的转码性能,可能帧率会提高几倍?
前言
折腾 Intel Quick Sync 最好用 linuxserver/jellyfin 而不是官方的 jellyfin/jellyfin,主要原因:
linuxserver/jellyfin基于ubuntu(focal),而jellyfin/jellyfin基于debian(buster);linuxserver/jellyfin已经配置好源,可以直接通过命令行升级最新版本;linuxserver/jellyfin遇到问题比较容易找到解决方案,毕竟折腾的人多;
进入容器
老苏目前安装的 latest 版对应的 Jellyfin 的版本是 10.7.7

接下来的操作将在容器内进行,进入容器的方法一般是通过 SSH 客户端执行下面的命令
# 进入容器名称为 jellyfin 的内部操作
docker exec -it jellyfin /bin/bash
但既然都已经用了 portainer ,就没必要了再用 SSH 客户端了,因为 portainer 具备和群晖 终端机 一样的功能,而且比 终端机 更好用
在 Containers 中 Quick actions 下面找到 >_

点击后进入 Container console

点 Connect 进入容器

查看信息
要查看信息需要先安装相应的软件,比如 vainfo 和 lshw
# 更新源
apt update
# 安装 vainfo、lshw
apt install -y vainfo lshw
先查询 jellyfin 容器的相关的信息,内核是 Debian(buster)
# 查看容器的内核版本
cat /etc/issue
# 或者
cat /etc/*release

再查询下显卡信息,显卡确实是 Intel HD Graphics 5500,驱动是 i915/i965
# 显卡信息
lshw -c display
# 或者
lshw -c video

# 设备列表
lspci | grep VGA

# 显示开机信息
dmesg
最后看看驱动,有报错
# 查看 intel 驱动
vainfo

显卡驱动
Intel Quick Sync 需要用到 Intel "non-free" 的驱动,这个 "non-free" 不是指要花钱,而是指代码是闭源的,但官方 docker 并没有安装 "non-free" 驱动
Jellyfin 永远不会将 Intel "non-free" 驱动作为其官方 docker 镜像的一部分,因为他们承诺只包含开源软件。而 Linuxserver.io 没有这样的限制,因此他们可以自行决定将 Intel "non-free" 驱动与 Jellyfin 捆绑在其 Jellyfin 容器中
后面你会看到这个容器的 ffmpeg 还是 4.3.2,但最新的版本已经是 4.4.1
驱动的版本也在不断升级迭代中,所以只有测试才能发现问题,但是老苏平时也没关心这方面,所以都先用最新版吧,毕竟只是介绍过程。
老苏在这里尝试了几种方式,受限于内核 Debian(buster),驱动的版本都只能是 18.4.1+ds1-1 ,用 vainfo 看其实是失败了
尝试一(失败)
按 intel 官方文档的方法,添加的 Ubuntu 18.04 (bionic) 的源
# 安装 gpg-agent、wget、curl
apt install -y gpg-agent wget curl
# 添加 intel key
wget -qO - https://repositories.intel.com/graphics/intel-graphics.key | apt-key add -
# 备份(可选操作,只是老苏的个人习惯)
cp /etc/apt/sources.list /etc/apt/sources.list.bak
# 添加 intel 源(ubuntu bionic)
echo 'deb [arch=amd64] https://repositories.intel.com/graphics/ubuntu bionic main' >> /etc/apt/sources.list
# 更新源
apt update
# 尝试安装驱动
apt install -y intel-media-va-driver-non-free
装了半天什么都没有

# 安装 aptitude 软件包管理器
apt install -y aptitude
# 尝试用包管理器安装驱动
aptitude install -y intel-media-va-driver-non-free
用包管理器结果也是一样的

【结论】:自 2021 年 10 月 14 日起,intel 已经不再为 Ubuntu 18.04 提供更新的软件包。
尝试二(失败)
尝试将 /etc/apt/sources.list 源加上 non-free,需要先安装编辑器
# 安装 vim
apt install -y vim
# 修改/etc/apt/sources.list
vim /etc/apt/sources.list
原来的的 /etc/apt/sources.list 是这样的
# deb http://snapshot.debian.org/archive/debian/20210902T000000Z buster main
deb http://deb.debian.org/debian buster main
# deb http://snapshot.debian.org/archive/debian-security/20210902T000000Z buster/updates main
deb http://security.debian.org/debian-security buster/updates main
# deb http://snapshot.debian.org/archive/debian/20210902T000000Z buster-updates main
deb http://deb.debian.org/debian buster-updates main
deb [arch=amd64] https://repositories.intel.com/graphics/ubuntu bionic main
除了上一步添加的源之外,其他的 3 条都在 main 后面加上了 non-free
# deb http://snapshot.debian.org/archive/debian/20210902T000000Z buster main
deb http://deb.debian.org/debian buster main non-free
# deb http://snapshot.debian.org/archive/debian-security/20210902T000000Z buster/updates main
deb http://security.debian.org/debian-security buster/updates main non-free
# deb http://snapshot.debian.org/archive/debian/20210902T000000Z buster-updates main
deb http://deb.debian.org/debian buster-updates main non-free
deb [arch=amd64] https://repositories.intel.com/graphics/ubuntu bionic main
保存之后要重新更新一下
# 更新源
apt update
# 检查可用的驱动版本
apt-cache madison intel-media-va-driver-non-free
# 安装驱动
aptitude install -y intel-media-va-driver-non-free
这种方式安装的驱动版本和添加下面这个源安装的版本是一样的
# 这个源安装的版本为(18.4.1+ds1-1)
echo 'deb http://ftp.cn.debian.org/debian buster main non-free' >> /etc/apt/sources.list
安装完成后,用 vainfo 检查一下,还是有错误

【结论】:受限于内核 Debian(buster),驱动的版本只有 18.4.1+ds1-1
尝试三(成功)
和 linuxserver/jellyfin 一样,采用 Ubuntu 20.04 (focal) 做源
# 更新源
apt update
# 安装 gpg-agent、wget、curl
apt install -y gpg-agent wget curl
# 添加 intel key。如果不是显示 OK,就需要再次执行,直至显示 OK 为止
wget -qO - https://repositories.intel.com/graphics/intel-graphics.key | apt-key add -
# 添加 intel 源(ubuntu focal)
echo 'deb [arch=amd64] https://repositories.intel.com/graphics/ubuntu focal main' >> /etc/apt/sources.list
# 更新源
apt update
# 检查可用的驱动版本
apt-cache madison intel-media-va-driver-non-free
这个源的驱动版本很多,但并不能直接安装,还需要先安装依赖包

# 添加 debian bullseye 源作为依赖
# 这个源安装的版本为(21.1.1+ds1-1)
echo 'deb http://deb.debian.org/debian bullseye main non-free' >> /etc/apt/sources.list
# 更新源
apt update
# 安装 aptitude 软件包管理器
apt install -y aptitude
# 安装依赖
aptitude install -y libz3-4 libigdgmm11 libigdfcl1
# 安装驱动
aptitude install -y intel-media-va-driver-non-free
安装完成后,用 vainfo 检查一下,还是有错误

接来这步非常关键,就是删除 libigdgmm 的副本,来自:https://github.com/intel/libva/issues/534
# 非常关键的一步
ls -al /usr/local/lib
# 删除 libigdgmm
rm /usr/local/lib/libigdgmm.so.11
rm /usr/local/lib/libigdgmm.so.11.1.905

再用 vainfo 检查,终于正常了

下面👇的指令暂时没用上,留着下次折腾的时候用,免得还得临时去百度
# 检查可用的驱动版本
apt-cache madison intel-media-va-driver-non-free
# 安装驱动
apt install -y intel-media-va-driver-non-free
# 升级驱动
apt install --only-upgrade -y intel-media-va-driver-non-free
# 删除驱动
aptitude remove intel-media-va-driver-non-free
# 安装指定版本的驱动
aptitude install -y intel-media-va-driver-non-free=21.3.3+i620~u20.04
# 查询驱动文件
ls -al /usr/lib/x86_64-linux-gnu/dri/
升级 ffmpeg
查看下 jellyfin-ffmpeg 的版本
# 查看 ffmpeg 版本
/usr/lib/jellyfin-ffmpeg/ffmpeg

版本是 4.3.2,最新的 jellyfin-ffmpeg 是 4.4.1
# 检查可用的版本
apt-cache madison jellyfin-ffmpeg

开始升级,两种方式都挺慢的,可以考虑在容器外下载好了再拷贝到容器中,因为在外面下可以用工具
# 方法一
aptitude install -y jellyfin-ffmpeg
# 方法二先下载再安装
curl -LO https://repo.jellyfin.org/releases/server/debian/stable/ffmpeg/jellyfin-ffmpeg_4.4.1-1-buster_amd64.deb
# 安装
dpkg -i jellyfin-ffmpeg_4.4.1-1-buster_amd64.deb
# 或者
apt install ./jellyfin-ffmpeg_4.4.1-1-buster_amd64.deb
升级完成后再次查看 ffmpeg 版本

设置
进入控制台 --> 播放 --> 硬件加速 ,选择 Intel Quick Sync,测试源还是同一个 4K 视频源

Docker 的资源占用一直维持着比较低的水平


但是转码的时间比较长,不像采用 VAAPI 几乎是即开即看,有转码文件

而且看着也有流,但是并不能播放

网页端的播放信息中没有视频信息

不确定是显卡不行还是驱动和 ffmpeg 不匹配导致的,暂时不想折腾了
建议
如果你是新安装,建议用 linuxserver/jellyfin 而不是 jellyfin/jellyfin,因为 jellyfin/jellyfin 装驱动太麻烦了
当然可能更好用的是 nyanmisaka/jellyfin,不过老苏暂时还没试过










