U-NAS安装Jellyfin并实现核心显卡硬解转码

2020-01-23 19:30:00 25点赞 168收藏 54评论

使用需求

前面两篇文章中,我已经将U-NAS和Kodi都部署好,能够实现NAS+HTPC的基本功能。所以从这一篇开始,我会介绍U-NAS和Kodi中可以安装的一些实用或者好玩的插件。写到这一篇,其实懂的朋友看标题就知道我要说什么,不过我还是要墨迹一遍,解释一下装jellyfin的作用是什么。首先,Kodi是一款优秀的媒体播放器,功能强大,但是主要是用于局域网内的本地播放。如果你用手机想看家里服务器上的电影文件,就算你的网速跟得上,钱包也不一定跟得上。Jellyfin的转码功能就是把服务器里面的文件预先转成一个相对低码率占用带宽比较小的视频流,这样能够节约带宽资源,传统的解码方式是CPU通过ffmpeg实现转码,这种对NAS的CPU压力很大,尤其很多的NAS都是低功耗设计,CPU本身的能力并不是很强。引入GPU解码能够很大程度上解放CPU的负担,让专业的GPU做转码的事就是篇文字的初衷。说到这里还需要说一下自身的硬件平台,是一个1017u的一体机,CPU比较孱弱,GPU是intel的HD核心显卡,如果需要用独立显卡去转码的朋友可能需要在U-NAS中去处理下显卡的驱动问题,朋友们可以根据网上的其他资料自行研究,我没有类似的情况就不展开介绍,为了不折腾已经配置好的实体机,以下设置过程在虚拟机中完成。

创建磁盘群组建立Docker文件夹

我们在U-NAS的控制中心里找到RAID管理器和逻辑卷管理,如果在U-NAS下只挂载了一块硬盘可以直接在逻辑管理器中创建群组,把单盘格式化挂载。如果有组RAID的需要则需要在RAID管理器中设置RAID。

本文模拟了4块硬盘的情况,这里显示出RAID0,1,5,6,10 这几种RAID方式,一般来说RAID0是两块硬盘同时读写,速度最快,但是其中一块盘故障数据全丢。RAID1是2块盘互相备份,但是只能用最小容量的一块盘的容量,安全性比较好。RAID5需要至少3块盘,用来做2用1备或者3用1备这种方式,当1块出现问题可以及时更换重组阵列。RAID6则需要至少4块盘,具有更高的容错能力,可以任意2块盘损坏的时候进行阵列重组。RAID10就是RAID1和RAID0的结合,首先是4块盘两两组合成RAID1,两个RAID1再组RAID0,这种方式能够兼顾读写性能和安全性,但是他只能允许出现这两组里面中分别最多坏一块盘,如果某个raid1组当中两块盘全坏掉,数据也是无法重组的。RAID介绍到这,希望能帮到不同需求的小伙伴,因为我是在虚拟机中演示就随便填了一个RAID10,大家还是根据自己的情况选择。如果读RAID不需要,可以在磁盘群组中直接把所有的盘都勾起来,系统会自动形成一个存储池容量是所有硬盘的加和,这种方式更适合有多块不同容量的用户。

创建raid10存储池,起名unas创建raid10存储池,起名unas

逻辑卷管理中创建卷组,起名123逻辑卷管理中创建卷组,起名123

创建共享文件夹docker,记住框里面的路径,后续在jellyfin设置中会用到。创建共享文件夹docker,记住框里面的路径,后续在jellyfin设置中会用到。

       点击左上角的菜单,找到u-file资源管理器,在docker文件夹中创建另外两个普通文件夹config,cache以及media三个文件夹。 点击左上角的菜单,找到u-file资源管理器,在docker文件夹中创建另外两个普通文件夹config,cache以及media三个文件夹。

U-NAS安装Docker套件

进入app管理器,在右上角的搜索框里搜多docker找到docker控件进行安装。进入app管理器,在右上角的搜索框里搜多docker找到docker控件进行安装。

我们把存储目录设置成docker,点应用,然后点管理docker我们把存储目录设置成docker,点应用,然后点管理docker


第一次登陆需要输入用户名和密码,默认用户名为admin, 密码需要自己设置一个8位数的密码。进入只有会出现另一个提示,我们选择最左边的local也就是本地管理,这时候就看到docker的主页面。虽然页面是英文的,不过还算简明,后面我们就在docker中完成jellyfin的安装和部署。

在docker页面登陆docker在docker页面登陆docker

进入页面后,估计大家跟我一样一脸迷茫。后来我才搞清楚其实这个界面本身就是在docker环境下运行的一个容器。不管那么多,我们先点击页面中间的小鲸鱼图标,进入到本机的容器设置页面。

U-NAS安装Jellyfin并实现核心显卡硬解转码

进入设置页面以后,找到左边的images进入到容器镜像的搜索下载页面。进入设置页面以后,找到左边的images进入到容器镜像的搜索下载页面。

image这里输入jellyfin/jellyfen 点pull the imageimage这里输入jellyfin/jellyfen 点pull the image

然后点击左侧container选项卡,点击右侧的add container然后点击左侧container选项卡,点击右侧的add container

Name这里写jellyfin,镜像输入jellyfin后会自己关联出名字,如图填写完整。Name这里写jellyfin,镜像输入jellyfin后会自己关联出名字,如图填写完整。

网页下拉到底部,这里需要对容器的网络,硬盘文件挂载,启动参数等做设置。

首先点最左边的commands & logging选项卡,这里有我们需要填写的参数。在CMD栏中输入:

--device=/dev/dri:/dev/dri

这段代码的作用是让docker中的jellyfin能够直接调用主机中的核心显卡,截图中两侧的单引号是软件自动加上的,输入时不需填写引号。

CMD栏填入 --device=/dev/dri:/dev/driCMD栏填入 --device=/dev/dri:/dev/dri

然后我们填写第二个选项卡volumes,这个选项卡是把容器的文件映射到本地硬盘上,便于修改和设置。我们需要把

左侧红色框内根据自己的共享文件夹设置中自己设置共享目录的路径。左侧红色框内根据自己的共享文件夹设置中自己设置共享目录的路径。

接下来network选项卡里我选择host,这样设置最简单,避免加好多参数。对自己有自信的朋友可以尝试bridge,设置会稍复杂一点。

U-NAS安装Jellyfin并实现核心显卡硬解转码

接下来是Restart policy,这里我们点选always

U-NAS安装Jellyfin并实现核心显卡硬解转码

这些设置完成以后就可以点界面上方的按钮deploy the container来运行容器,浏览器新开个窗口输入unas的ip地址:8096,例如我的unas的ip地址是192.168.18.128那么进入jellyfin的地址就是192.168.18.128:8096。进入后我们就进入到软件的设置界面。

要输入的地址后:8096要输入的地址后:8096

界面首先让我们选择语言,我们选simple chinese中文。

进入后,我们填写登陆jellyfin的用户名密码,这个用户名和密码不一定和unas保持一致,可以自由填写。

U-NAS安装Jellyfin并实现核心显卡硬解转码

然后我们点击,添加媒体库,这里我索引一部电影做例子。

U-NAS安装Jellyfin并实现核心显卡硬解转码

这里我们选择类型是movie,名称也是movie,索引目录选择存放电影的目录。

U-NAS安装Jellyfin并实现核心显卡硬解转码

U-NAS安装Jellyfin并实现核心显卡硬解转码

设置好点ok,一路ok,登陆后进入主页面,点左侧的三横杠拉出菜单,点击控制台。

U-NAS安装Jellyfin并实现核心显卡硬解转码

然后找到播放,打开硬件转码,选择vaapi向下找到确定。

这时候可以尝试播放下影片看看转码是否起作用,如果硬解没有打开会跳出。

U-NAS安装Jellyfin并实现核心显卡硬解转码

设置好之后点小房子图标退回到jellyfin主页面,这时候在/media目录的电影已经被扫描出来了,点击进去看看能否播放。如果能放说明设置没问题,大家可以多尝试几部片子。

U-NAS安装Jellyfin并实现核心显卡硬解转码

使用感受和总结

说心里话,U-NAS这个docker设置界面刚开始也是把我折腾个半死。这个Portainer没有中文界面还不是最麻烦的,更麻烦的地方是很多设置不知道在哪里去找,与我熟悉的群辉和omv里面的设置界面完全不一样。好在也算折腾过一些NAS的人,磕磕绊绊的算是弄出来了,不然第二篇里立的flag就要自己打脸了。如果说U-NAS和omv还有黑群的区别,从我目前的接触看U-NAS的文件管理界面相比于omv简单很多,但是不如群辉直观,而且像docker这么重要的套件没有自己开发一个,感觉风格上东拼西凑,没有啥整体感,这个体验比不上群辉和omv。但是U-NAS也有自己的优点,比如基于debian 9,可以更好的支持硬件,能实现GPU转码,这些在比较封闭的群辉中是难以实现的。另外,文件管理器这些相比omv来说更接地气,也更容易上手,安卓端的APP我没有都用,感觉没有群辉那么精致但至少提供了,比起omv大量的手动配置操作已经好很多了。目前黑群是相当流行的,毕竟套件丰富好用,omv取了一个极客的思路,给了使用者很大的自由,自己动手。U-NAS更像是一个在中间找平衡的产物,不失为一种新的选择。

展开 收起
54评论

  • 精彩
  • 最新
  • 很不错的文章,值得推荐!

    校验提示文案

    提交
    多谢菌哥鼓励!

    校验提示文案

    提交
    收起所有回复
  • CMD栏填入 --device=/dev/dri:/dev/dri,我输入这个参数后,jellyfin就打不开,去掉这个参数就可以,不知道啥原因

    校验提示文案

    提交
    你可以往后看看我其他文章,我直接在ssh里面弄,绕过这个cmd了。

    校验提示文案

    提交
    果然,用命令行的方式就解决了,硬件解码也没问题,谢谢,解决了我一个大问题,不过还是想问下,为什么在网页端CMD填入 --device=/dev/dri:/dev/dri就没用呢,我看显卡驱动这一段代码也一样,你在网页端输入这代码为什么就可以 [高兴]

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 其实不需要docker也可以直接安装jelliyfin和emby等

    校验提示文案

    提交
    确实可以直接装,但是个人感觉docker的好处就是真崩了或者升级这些不会影响nas系统,通过docker重装也更方便。

    校验提示文案

    提交
    收起所有回复
  • 你好,我按照这个操作都设置之后播放会提示playbackerrornocompatblestream,出现这种情况有什么解决办法吗…

    校验提示文案

    提交
    这个jellyfin目前还不是所有码流和码率都支持,你在转码里设置成VAAPI试一下。另外要注意看下显卡支持的是哪一种,并且在debian环境下安装和配置好驱动。这样你再通过开启硬件转码看看能不能正常播放。比如我这个1017u它也不是所有的mp4都能正常开启转码,比如h.265编码的就转不了。

    校验提示文案

    提交
    收起所有回复
  • 添加的时候感觉一直在系统文件夹里翻来翻去

    校验提示文案

    提交
    是,很麻烦,我现在已经直接在ubuntu上跑了。

    校验提示文案

    提交
    收起所有回复
  • 请问大佬,怎么在群晖环境下开启jellyfin的硬件转码呢?

    校验提示文案

    提交
    首先,你的硬件需要是j1900和j3455这两种硬件配置,安装918+的系统。在docker中安装好jellyfin之后,用putty进到群晖的命令行模式,首先输入sudo -i进入root模式,然后输入ls /dev/dri看下里面有没有card0 renderD128如果有那就恭喜你,你的群晖可以开启硬件转码。进行下一步,输入docker run --name=jellyfin --device=/dev/dri:/dev/dri 回车这样jellyfin就可以开启核心显卡的转码了。如果你不是3455或者1900平台,或者没有装918+都是无法开启转码的。其他平台想用jellyfin转码可以采用unraid或者pve的方法,教程在B站上有。

    校验提示文案

    提交
    就是这样开启的

    校验提示文案

    提交
    收起所有回复
  • 不知道为什么,加了一张RX470独显,并且打上了显卡驱动,jellyfin开了硬件转码,看4KH.265还是把CPU给爆了,按道理不应该啊。。。头大

    校验提示文案

    提交
    不知道您是不是在unas上运行,这个系统是基于debian9的,建议您检查下驱动,或者内核。官方的驱动不一定比三方的好,如果您这个nas的要求不太高建议在ubuntu下搭建,这样驱动更容易解决。

    校验提示文案

    提交
    我是在unas下运行的,没办法 研究了一夜 ,貌似无解,去GitHub也没看到解决的办法

    校验提示文案

    提交
    还有12条回复
    收起所有回复
  • 不过是omv还是U-NAS下,通过portainer安装jellyfin,在Command中输入参数--device=/dev/dri:/dev/dri就无法通过IP+端口打开jellyfin的管理页面,如果删掉后就可以正常打开,不知道什么原因,大神求解,CPU是奔腾G3250T

    校验提示文案

    提交
    建议你看看我后面lubuntu和libreelec的里面写了命令行直接敲的这种。portainer进入容器输入命令,输入ls /dev/dri看看有没有renderD128如果有就说明显卡挂载好了。你这个应该是命令没输对,方便的话可以把log发给我。

    校验提示文案

    提交
    这个地方,你可以看下我后面几篇文章里面docker命令这部分。应该是lubuntu那篇,因为都是基于debian其实差不多。我建议你可以先用我的这个命令把显卡挂载好,然后用portainer慢慢修改目录问题。我这里把命令行给你贴进来。
    sudo docker run -d --name=jellyfin-HW -p 8096:8096 --device=/dev/dri:/dev/dri -v /home/kodi/docker/jellyfin/config:/config -v /home/kodi/docker/jellyfin/cache:/cache -v /home/kodi/mnt/media:/media --restart=always jellyfin/jellyfin
    其中,这个--device=这个参数就是u-nas下挂载显卡用的参数了,可能portainer的cmd参数设置的不对吧。 -v 后面这一行在冒号之前这一段是你的u-nas系统里对应的目录位置,后面是系统自带。另外,我这个设置以后打开转码的时候在某些系统里会出现报错,你可以看一下portainer的log,应该是提示config里面找不到transcodes文件夹,在系统挂载config的目录里添加一个transcodes文件夹就可以正确保存了。

    校验提示文案

    提交
    还有3条回复
    收起所有回复
  • 作者你好~感谢你的文章~我用的是u-nas4的系统,CPU 是 G5400,但是好像正常识别我的集显,这种情况怎么办?系统没有 /dev/dri 这个路径。

    校验提示文案

    提交
    u-nas实际还是debian,正常系统里肯定有/dev/dri/文件夹的,你的问题是docker里没找到还是u-nas系统里直接就没有?

    校验提示文案

    提交
    nas里直接没有

    校验提示文案

    提交
    还有5条回复
    收起所有回复
  • 到了image这里输入jellyfin/jellyfen 点pull the image,后出现错误,不能下载。什么原因?

    校验提示文案

    提交
    用命令行吧

    校验提示文案

    提交
    收起所有回复
  • 楼主1017u硬解jellyfin?请问cpu占用是多少?

    校验提示文案

    提交
  • 能有效调用硬解吗?

    校验提示文案

    提交
  • @carlyang1986 大佬好,我想请教一下,按照你的这个方法设置好之后,播放的时候会出现PlaybackErrorNoCompatbleStream,这样还有救吗 [喜极而泣]

    校验提示文案

    提交
  • 进去添加文件夹的时候找不到文件夹,怎么回事

    校验提示文案

    提交
  • 全部按照步骤来的,唯一不同是docker是原先安装了的

    校验提示文案

    提交
  • 感谢楼主解我疑惑,PlaybackErrorNoCompatibleStream困扰了我好久,现在终于找到硬解失败的原因了

    校验提示文案

    提交
  • 多谢大佬,比U-share 论坛里的某些教程详细多了,还有截图

    校验提示文案

    提交
  • 我注意到Entry Point里面填了很多参数,和我的不一样,但是你图片很模糊看不清,能麻烦换张清楚的图片么,不知道是不是Entry Point的不同导致在添加--device=/dev/dri:/dev/dri后无法通过网页连接jellyfin

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
168
扫一下,分享更方便,购买更轻松