bzftxia 发表于 2022-5-2 02:56:07

如何在Docker安装Jellyfin并开启IGPU硬解

本帖最后由 bzftxia 于 2022-6-5 11:07 编辑

在UNAS 5中可以直接在APP管理器中安装Jellyfin,安装教程可以参考这几篇[教程] 【新手教程】UNAS安装jellyfin打造家用影音服务器1章安装篇、[教程] 【新手教程】UNAS安装jellyfin打造家用影音服务器2章配置篇以及【新手教程】Intel核显开启 jellyfin 影音 Intel QuickSync硬解,这三篇都是大佬“炫狼数码”的作品,很有参考价值,也给了我这篇教程很大的帮助。
直接安装与Docker安装各有利弊,直接安装的话能更好的发挥CPU的性能,并且可以在控制中心的系统升级里操作升级。但也有弊端,直接安装会安装在系统盘上,一则占用系统盘空间,二则,假如未修改/cache和/config的存储路径,那么缓存及其他数据文件有可能撑爆你的系统盘(这会导致你无法正常使用UNAS系统,包括不限于无法登录web管理页、TR无法正常下载等),三则假如在折腾的过程中有什么误操作有可能会危及系统的稳定性。而在Docker中安装则在牺牲了部分CPU性能、升级便利性之后,也带来了一些好处,/cache和/config文件夹你可以先放在数据盘中不怕爆系统盘,而且容器可以随意操作,即使弄坏了容器删了重建就好了,完全无风险。

这篇教程,以我的配置为例,你们可以参考自己的配置作适度修改。
我的配置:CPU I3 9100T(核显UHD630),另插有独显两张,系统版本是5.1.2

一、先期工作(以下所有命令行均为登录ROOT账号的状态下操作)
      1、安装驱动
apt update -y
#获取更新列表,-y表示默认同意
apt install ffmpeg
#安装FFMPEG
apt install intel-media-va-driver-non-free -y
#安装VAAPI驱动

apt install vainfo -y
#安装vainfo
export LIBVA_DRIVER_NAME=iHD#选择IHD 核显闭源驱动
vainfo
#测试硬件解码能否正常使用,这里假如能正常输出结果,那么请跳到2、创建文件夹。
      这里我提一点我这篇教程折腾了两三天的难点。正常解码是调用系统所识别的card0和renderD128,当你的机器只有核显的时候,那么核显就是默认的card0和renderD128,但是当你机器上另外插有独立显卡的时候,核显不一定就是card0和renderD128了,在这个时候运行vainfo会因为调用错了显卡而出错,返回如下 https://www.u-share.cn/data/attachment/forum/202205/01/161118p5qpki5uip9cp35g.png
在这个时候,你需要使用如下命令lspci | grep -i vga
#列出机器上插的显卡,注意红框里的参数,第一个代表的是你显卡挂载的位置,而第二个是厂商品牌
https://www.u-share.cn/data/attachment/forum/202205/01/162355fp5eh5zztppbxhbl.png
cat /sys/kernel/debug/dri/128/name
#获取renderD128的信息,可以看到我这里renderD128返回的是挂载在01:00.0的N卡。所以vainfo会出错


https://www.u-share.cn/data/attachment/forum/202205/01/162844i7vaaxhxazaogmcs.png
cat /sys/kernel/debug/dri/130/name
#这里是128往上一一测试,我直到130才找到INTEL核显,这里请牢记你的节点序号,后面可能会用到。
https://www.u-share.cn/data/attachment/forum/202205/01/163615wv0pu22ug0jgj27p.png
vainfo --display drm --device /dev/dri/renderD130
#查看解码设置输出,这里renderD130是我核显所在的节点,你应填写你核显所在的节点,当选择正确节点后,vainfo可以正常输出结果
https://www.u-share.cn/data/attachment/forum/202205/01/163934tjr0ms7wj6gjmt7m.png

      2、创建jellyfin需要用到的文件夹
      可以在你docker的存储目录下新建/jellyfin文件夹,在其内再新建两个文件夹/cache和/config,当然,这几个文件夹你可以放在任意地方,我的建议只是便于管理。


二、正式操作(这里使用的Docker面板是Unas官方所出的,美观、便于使用,在web桌面点击Docker后,在弹出界面上点击“管理Docker”进入)
1、拉取镜像:点击左侧“镜像”后,再点击红色“拉取镜像”,镜像名称里填写“jellyfin/jellyfin",后点击确定,拉取完成后开始创建容器。
https://www.u-share.cn/data/attachment/forum/202205/01/165200hvk1terg00tko6te.png
2、创建容器:
      a常规设置:
      点击左侧”容器“后,再点击中间红色“创建容器”,在弹出界面中填写相关信息,“容器名称”可以随你喜欢,“镜像”因为已经拉取完成在弹出的下拉列表中选择jellyfin项,然后点击网络选项中的“添加”,在“宿主机”和“容器”中都填写8096(因为jellyfin的默认登录端口是8096,这样填写的意思就是登录宿主机(也就是你的NAS)的8096端口》相当于连接到这个容器的8096端口》达成登录jellyfin)
https://www.u-share.cn/data/attachment/forum/202205/01/165749ex22izxvsi660z6i.png
      b其他设置-数据卷:
      点击“其他设置”,在其下方再点选“数据卷”,而后点击“添加”,以在容器内创建文件夹并使其与宿主机上的文件夹相关连,以达成jellyfin在容器内可以读写宿主机上的内容(以截图举例,即jellyfin在容器内读取、修改/movie文件夹里面的电影数据,最终实际是作用在宿主机上“/电影”文件夹里的电影数据)。jellyfin需要设置至少三个文件夹,/cache、/config以及一个你用来放电影、电视剧的文件夹。/cache和/config文件夹名是jellyfin里面的默认值,方便起见最好不要更改。其他用户,有的只设置了一个/media文件夹来统一放电影、动画、电视剧等,而我是分别存储的,所以存储视频的文件夹,添加几个或者名叫什么,全凭你们喜欢。
https://www.u-share.cn/data/attachment/forum/202205/01/221004xxxdzqne9tezzbft.png
      c其他设置-重启策略
      点击“数据卷”右侧的重启策略,点选“总是”
https://www.u-share.cn/data/attachment/forum/202205/01/221738ly32u0kg3aiub3xz.png
      D其他设置-运行和资源
      点击“重启策略”右侧的“运行和资源”,再点击下方的“添加”。假如你机器只装了核显的话,那么只需要添加一栏,宿主机和容器都填写/dev/dri。jellyfin默认调用容器里的renderD128节点就相当于调用了宿主机的renderD128节点,而我因为另外安装了独立显卡,导致核显在系统里被识别为card2、renderD130。而在jellyfin里除了vaapi可以指定渲染节点,别的硬件解码方式是无法修改节点的,所以我用截图里面的设置来达成jellyfin以为他在调用card0、renderD128而实际上他调用的是宿主机的card2、renderD130。(系统里card0对应renderD128,card1对应renderD129,以此类推)
https://www.u-share.cn/data/attachment/forum/202205/02/023944iztkykvjbtjvhtbf.png

      然后点击确定,稍等片刻,容器创建完成。
3、容器控制台操作
      a、进入控制台:点击左侧“容器”按钮回到容器页面,并在jellyfin容器右侧功能按钮中点击如红框所示按钮,而后点击确定,进入该容器控制台。
https://www.u-share.cn/data/attachment/forum/202205/01/224152rhbf193h5fm1hvaf.png

      b、完成容器的相关配置
apt update
#获取可更新列表
apt install nano -y
#安装nano工具
nano /etc/apt/sources.list
#编辑debian更新源列表
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ buster main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ buster main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-updates main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-updates main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-backports main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-backports main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian-security buster/updates main contrib non-free

#将以上信息加在最后,然后ctrl+X,再按Y,最后回车
apt update
apt install intel-media-va-driver-non-free -y
#安装VAAPI驱动
apt install vainfo -y
#安装vainfo
export LIBVA_DRIVER_NAME=iHD
#选择IHD 核显闭源驱动
vainfo
#查看硬解设置输出,能正常输出,则说明硬解动作正常。正常返回的内容上文中已附图示意。
到此,关于在docker中安装jellyfin,并开启IGPU硬件的所有前置工作均已完成。
登录并初始化jellyfin的配置,就属于常规化的操作了,并无什么特殊难点,具体可以参考【新手教程】UNAS安装jellyfin打造家用影音服务器2章配置篇

以下为在Jellyfin里开启硬件解码的具体操作
**** Hidden Message *****


tlj247 发表于 2022-7-29 11:56:02

这个文章很有用,感谢提供,很详细, 有的版主说一无二,有的说二无一,自己对号入做,授人以鱼不如授人以渔,赞一个

tlj247 发表于 2022-7-29 17:27:40

不知在控制台操作一遍前期工作是什么目的

bzftxia 发表于 2022-7-29 23:20:34

tlj247 发表于 2022-7-29 17:27
不知在控制台操作一遍前期工作是什么目的

反正我是这样操作的。你可以试一试不在控制台这么操作能不能正常运行。假如有结果,欢迎反馈

zz3656 发表于 2022-8-26 10:53:06

学习一下辛苦大佬整理了

cityhunterxyz 发表于 2022-8-28 06:18:31

学习

26066 发表于 2022-10-11 16:19:38

我要看看怎么搞的。

26066 发表于 2022-10-12 17:52:30

我的jellyfin无法硬解,设置都是对的,就是无论看什么视频,只要是转码,CPU占用就很高,而且也没有提示说是QSV转码。

ranky904 发表于 2022-11-14 20:40:32

学习学习

hfey2008 发表于 2022-11-15 09:34:58

看看   
页: [1] 2
查看完整版本: 如何在Docker安装Jellyfin并开启IGPU硬解