查看: 12323|回复: 33

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

[复制链接]
发表于 2022-5-2 17:35:10 | 显示全部楼层 |阅读模式
本帖最后由 bzftxia 于 2022-5-2 17:49 编辑

在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、安装驱动
  1. apt update -y
  2. #获取更新列表,-y表示默认同意
复制代码
  1. apt install ffmpeg
  2. #安装FFMPEG
复制代码
  1. apt install intel-media-va-driver-non-free -y
  2. #安装VAAPI驱动
复制代码

  1. apt install vainfo -y
  2. #安装vainfo
复制代码

  1. vainfo
  2. #测试硬件解码能否正常使用,这里假如能正常输出结果,那么请跳到2、创建文件夹。
复制代码

      这里我提一点我这篇教程折腾了两三天的难点。正常解码是调用系统所识别的card0和renderD128,当你的机器只有核显的时候,那么核显就是默认的card0和renderD128,但是当你机器上另外插有独立显卡的时候,核显不一定就是card0和renderD128了,在这个时候运行vainfo会因为调用错了显卡而出错,返回如下
在这个时候,你需要使用如下命令
  1. lspci | grep -i vga
  2. #列出机器上插的显卡,注意红框里的参数,第一个代表的是你显卡挂载的位置,而第二个是厂商品牌
复制代码


  1. cat /sys/kernel/debug/dri/128/name
  2. #获取renderD128的信息,可以看到我这里renderD128返回的是挂载在01:00.0的N卡。所以vainfo会出错
复制代码




  1. cat /sys/kernel/debug/dri/130/name
  2. #这里是128往上一一测试,我直到130才找到INTEL核显,这里请牢记你的节点序号,后面可能会用到。
复制代码


  1. vainfo --display drm --device /dev/dri/renderD130
  2. #查看解码设置输出,这里renderD130是我核显所在的节点,你应填写你核显所在的节点,当选择正确节点后,vainfo可以正常输出结果
复制代码



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


二、正式操作(这里使用的Docker面板是Unas官方所出的,美观、便于使用,在web桌面点击Docker后,在弹出界面上点击“管理Docker”进入)
1、拉取镜像:点击左侧“镜像”后,再点击红色“拉取镜像”,镜像名称里填写“jellyfin/jellyfin",后点击确定,拉取完成后开始创建容器。

2、创建容器:
      a常规设置:
      点击左侧”容器“后,再点击中间红色“创建容器”,在弹出界面中填写相关信息,“容器名称”可以随你喜欢,“镜像”因为已经拉取完成在弹出的下拉列表中选择jellyfin项,然后点击网络选项中的“添加”,在“宿主机”和“容器”中都填写8096(因为jellyfin的默认登录端口是8096,这样填写的意思就是登录宿主机(也就是你的NAS)的8096端口》相当于连接到这个容器的8096端口》达成登录jellyfin)

      b其他设置-数据卷:
      点击“其他设置”,在其下方再点选“数据卷”,而后点击“添加”,以在容器内创建文件夹并使其与宿主机上的文件夹相关连,以达成jellyfin在容器内可以读写宿主机上的内容(以截图举例,即jellyfin在容器内读取、修改/movie文件夹里面的电影数据,最终实际是作用在宿主机上“/电影”文件夹里的电影数据)。jellyfin需要设置至少三个文件夹,/cache、/config以及一个你用来放电影、电视剧的文件夹。/cache和/config文件夹名是jellyfin里面的默认值,方便起见最好不要更改。其他用户,有的只设置了一个/media文件夹来统一放电影、动画、电视剧等,而我是分别存储的,所以存储视频的文件夹,添加几个或者名叫什么,全凭你们喜欢。

      c其他设置-重启策略
      点击“数据卷”右侧的重启策略,点选“总是”

      D其他设置-运行和资源
      点击“重启策略”右侧的“运行和资源”,再点击下方的“添加”。假如你机器只装了核显的话,那么只需要添加一栏,宿主机和容器都填写/dev/dri。jellyfin默认调用容器里的renderD128节点就相当于调用了宿主机的renderD128节点,而我因为另外安装了独立显卡,导致核显在系统里被识别为card2、renderD130。而在jellyfin里除了vaapi可以指定渲染节点,别的硬件解码方式是无法修改节点的,所以我用截图里面的设置来达成jellyfin以为他在调用card0、renderD128而实际上他调用的是宿主机的card2、renderD130。(系统里card0对应renderD128,card1对应renderD129,以此类推)


      然后点击确定,稍等片刻,容器创建完成。
3、容器控制台操作
      a、进入控制台:点击左侧“容器”按钮回到容器页面,并在jellyfin容器右侧功能按钮中点击如红框所示按钮,而后点击确定,进入该容器控制台。


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

  8. #将以上信息加在最后,然后ctrl+X,再按Y,最后回车
复制代码
  1. apt update
复制代码
  1. apt install intel-media-va-driver-non-free -y
  2. #安装VAAPI驱动
复制代码
  1. apt install vainfo -y
  2. #安装vainfo
复制代码
  1. export LIBVA_DRIVER_NAME=iHD  
  2. #选择IHD 核显闭源驱动
复制代码
  1. vainfo
  2. #查看硬解设置输出,能正常输出,则说明硬解动作正常。正常返回的内容上文中已附图示意。
复制代码

到此,关于在docker中安装jellyfin,并开启IGPU硬件的所有前置工作均已完成。
登录并初始化jellyfin的配置,就属于常规化的操作了,并无什么特殊难点,具体可以参考【新手教程】UNAS安装jellyfin打造家用影音服务器2章配置篇

以下为在Jellyfin里开启硬件解码的具体操作
游客,如果您要查看本帖隐藏内容请回复



回复

使用道具 举报

发表于 2022-5-10 16:06:08 | 显示全部楼层
很详细的教程了
回复 支持 反对

使用道具 举报

发表于 2022-5-11 08:26:05 | 显示全部楼层
学习
回复 支持 反对

使用道具 举报

发表于 2022-5-31 18:28:00 | 显示全部楼层
支持支持,感谢分享!!!
回复 支持 反对

使用道具 举报

发表于 2022-6-21 12:33:18 | 显示全部楼层

学习
回复 支持 反对

使用道具 举报

发表于 2022-6-28 16:36:41 | 显示全部楼层
感谢分享
回复 支持 反对

使用道具 举报

发表于 2022-7-16 18:16:46 | 显示全部楼层
学习下
回复 支持 反对

使用道具 举报

发表于 2022-7-26 20:42:56 | 显示全部楼层
学习学习
回复 支持 反对

使用道具 举报

发表于 2022-8-15 01:10:20 | 显示全部楼层
感谢分享
回复 支持 反对

使用道具 举报

发表于 2022-10-9 16:11:47 | 显示全部楼层
支持一下,家里电视老破旧,很多高清的都无法观看,试试这个方法行不行,
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|万由科技 ( 浙ICP备10004788号-13 )

GMT+8, 2024-3-29 23:16 , Processed in 0.073173 second(s), 49 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表