我的NAS+HTPC折腾之旅 篇八:LibreELEC部署媒体中心服务器emby和jellyfin篇
创作立场声明:jellyfin衍生于emby 3.5.2,emby从版本3.6开始不再开源。目前常见的4.X版本硬件转码需要购买会员。所以本文只选择了3.5.3版完成教程。本文用到的emby安卓客户端将放到百度网盘中。
emby和jellyfin的前世今生
用过jellyfin和emby的朋友肯定会发现,这两个软件不论端口8096还是界面都非常的相似,实际上jellyfin是从emby发展来的。起因是emby在3.6版本开始就不再开源,引起了一些核心开发人员的不满,这些人就独立出来做了jellyfin。jellyfin基于emby的3.5.2开发,许多文件还能发现的字样。在LibreELEC中emby的搭建方式可以用插件也可以用docker,这里我只讲插件安装emby server的方法。emby的docker安装方法和jellyfin差不多,大家可以参考linuxserver.io的介绍配置。jellyfin目前只能考虑使用docker安装,至于portable和linux Generic x86_64的版本无法运行(事实证明该方案目前不可行,后文会说原因)。
既然emby好用为啥还折腾jellyfin呢?因为闭源问题,现在新版的emby的硬件转码需要购买Premiere版本才可以开启硬件转码。但是老版本很多功能又不再支持了。我个人还是更看好jellyfin以后的发展,毕竟开源免费。这里我把两个媒体中心服务器的安装方法都放出来,大家可以根据自己的需要考虑用哪个。
LibreELEC安装emby server插件
Emby的服务器端插件在LibreELEC中默认给了安装插件,我们需要在插件选项中选择从库安装来安装emby插件,但是这里emby的插件有两个版本,3.5.3和4以上。我这样的穷鬼肯定还是选3.5.3的,如果已经购买了emby的会员可以考虑选择4,获取更多的技术支持。
建议关闭自动更新,以免哪天升级到4.x版本,硬件转码就不能免费用了。
然后输入本地服务器的IP地址:8096就可以看到emby的客户端了。
emby开启转码功能
emby语言国家等基本设置大家根据自己的实际情况设置即可,这里只介绍和LibreELEC有关的转码设置以及媒体库索引路径。
查询intel核心显卡的支持情况
如果使用的是intel的核心显卡,可以到intel的官网查询自己cpu的核心显卡支持的转码方式。这个网站还可以查询intel CPU的参数,例如是否支持VT-D等。
上次文章中有朋友问我推荐的哪种硬件,我当时建议的是G4560。考虑到现在8代的G5400T也就300多块钱,所以能上新还是推荐8代吧,毕竟核心显卡更好。J3455或者J1900这种看普通的H.264 4K是没问题的,H.265 10bit可能会有困难。所以准备一步到位的情况下推荐用G5400T,首先价格不是很贵,G5400T综合功耗和性能能够满足NAS+HTPC的使用,千元左右可以搞定4K H.265 10bit转码。如果喜欢弄黑群做硬件转码可以考虑J3455系列,对918+黑群支持的更好。功耗的这件事,我的态度是主要看多少纳米的制程,8代14纳米制程不会很费电,而且性能有余量,低负载情况下不会比所谓的低功耗CPU费电多少,但是性能不足CPU经常满载的话,CPU会非常的卡,也不会省下多少电费,此外CPU性能稍微强一点还能做更多的事情,比如做一个all in one的服务器,HTPC+NAS+软路由都是可以的,组一台多用途的服务器的电费总好过多台服务器加起来的总和。CPU发展到现在已经很成熟了,除非是落后的制程和技术,一般来说还是考虑用多少电换多少性能,大家选择处理器的时候可以根据需求适当考虑余量。CPU的话题扯远了,下面我们来讲解Jellyfin这边的安装和配置。
jellyfin在docker下安装后的设置
(如果根据我的教程已经安装了emby的朋友请一定在管理控制台中的高级选项中把网页登录的端口号修改一下,不然会造成jellyfin无法访问)
如果改完端口号也没啥反应,就到LibreELEC中把emby服务的插件禁用,等几秒钟后再启用就可以了。
测试下ip地址:8100是否能够打开emby,如果不能操作重复上述设置步骤,保存后禁用再开启服务或者重启主机直至能打开。
考虑到libreelec很多朋友都是考虑使用arm盒子来安装,所以采用了linuxserver.io维护的jellyfin。在他的介绍页面中可以找到arm盒子的GPU硬件加速的参数,这个是官方docker所不具备的,为了保证一定的通用性,我就找了linuxserver维护的jellyfin,各位看官可以视平台自行决定。linuxserver的dockerhub地址,具体参数大家可以参考修改
在之前的教程里没有在config的data目录下创建transcodes文件夹,但是在LibreELEC中如果没有这个文件夹会导致硬件转码失败。
在/storage/docker/jellyfin/config/data文件夹下创建transcodes文件夹
jellyfin的安装在lubuntu和omv的文章中已经介绍过多次,这里不再赘述。在ssh环境中登libreelec,默认路径是/storage,我们在storage目录下创建文件夹docker,docker下创建jellyfin目录用来保存容器的配置环境。
(1) mkdir docker
(2) cd docker
(3) mkdir jellyfin
(3) cd jellyfin
(4) mkdir cache config
(5) cd config
(6) mkdir data
(7) cd data
(8) mkdir transcodes
(9) cd
这时候光标退回到默认/storage目录下,我们通过docker安装jellyfin。ssh中输入命令:
docker run -d --name=jellyfin-HW -e PUID=0 -e PGID=0 -p 8096:8096 --device=/dev/dri:/dev/dri -v /storage/docker/jellyfin/config:/config -v /storage/docker/jellyfin/cache:/cache -v /var/新加卷/media:/media --restart=always linuxserver/jellyfin
如果有命令行恐惧症,可以采用winscp软件登录。下载安装过程不表,360软件中心或者网页上搜下winscp安装下载即可。软件设置如下:
接着创建doker/jellyfin/config/data/transcodes文件夹。
这个transcodes文件夹在转码保存设置前创建好即可,不影响docker部署jellyfin。jellyfin的转码文件在服务器设置中的播放选项卡中,和emby的设置方法类似,打开vaapi其他选项默认,点保存。稍等片刻可以设置成功。但是我的jellyfin有一些格式无法转码播放,docker中log中显示ffmpeg返回error code 137我不明白是什么原因,如果有懂的高人麻烦指点下。在emby 3.5.3中,手机客户端安装2.98版本时候也出现了rm文件无法播放的情况,用了3.0客户端就好了。我猜测是jellyfin的客户端问题,emby的手机客户端的兼容性要好的多,rm文件也可以顺利的开启GPU转码。但是到了网页端情况就反过来了,jellyfin多数文件可以正常的开启GPU转码,emby则提示串流错误。
jellyfin在LibreELEC下安装(暂时放弃,等dotnet插件更新)
之前在docker安装jellyfin之后我尝试把LibreELEC下的ffmpeg-tools的ffmpeg文件映射到docker中给jellyfin来用,但是手机客户端还是无法播放。于是我尝试使用jellyfin官方的教程来安装了generic linux的版本,官网上generic linux和portable是一样的,但是都需要netcore环境,如果没有在libreelec中安装过emby server插件,还需要安装Net Core Runtime和ffmpeg-tools这两个插件。
我参考了jellyfin的安装文档尝试安装了generic linux和portable两种包(下载的时候会发现是一种),按照官网指导配置好以后,运行报错。大意是系统缺少ICU package,我按照网上的教程尝试修改jellyfinportable包内的jellyfin.runtimeconfig.json这个文件才发现这个东西运行需要dotnet的runtime版本达到3.1以上,这个信息我在官方archlinux的教程中也得到了验证,看来新版的jellyfin确实需要在dotnet3.1以上环境下才能运行了。而libreelec插件源中提供的版本最新才2.2.6。
本打算继续尝试用docker版的dotnet和ffmpeg继续搞,但是微软这个dotnet 3.1的docker镜像已经达到了1.7G,而jellyfin的docker镜像才不到500m,反正jellyfin一直在更新,Libreelec也在更新,等后续Libreelec更新了新的插件后我再追加这部分内容,这部分内容就暂告段落。如果有朋友知道如何编译或者更新dotnet插件到新版本请留言告诉我,万分感谢。
结语
从Libreelec平台的角度看emby和jellyfin可以说各有所长,我现在手机看视频大部分时间都在用emby。在网页上我用jellyfin的时间比较多。一个有意思的情况,emby的转码GPU始终保持在25%到50%左右,比jellyfin的CPU解码占用率略低。但是jellyfin遇到可以硬转码的视频,前期会90%多甚至 100%的占用CPU进行转码,等HW转码任务完成后,cpu占用率会降低到10%附近,大部分时间在5%到10%之间。
jellyfin的GPU转码完成后vaapi进程关闭,仅保留ffmpeg进程,cpu占用率很低。
emby安卓客户端百度网盘地址:
提取码:h074
下一期我将介绍Libreelec下kodi安装emby的客户端以及皮肤设置等。
小庆庆爱小值
校验提示文案
appleman44
校验提示文案
追风的小明
one,有没有推荐的升级方案,双网口,4SATA
校验提示文案
查-无此人
校验提示文案
杰克是神马
校验提示文案
zsylive
校验提示文案
王老师
校验提示文案
wliangfj
校验提示文案
李逍遥第一
校验提示文案
三皮s
校验提示文案
mysm
校验提示文案
大肚蝈蝈
校验提示文案
jmlove008
校验提示文案
jmlove008
校验提示文案
三皮s
校验提示文案
李逍遥第一
校验提示文案
wliangfj
校验提示文案
王老师
校验提示文案
小庆庆爱小值
校验提示文案
zsylive
校验提示文案
大肚蝈蝈
校验提示文案
杰克是神马
校验提示文案
mysm
校验提示文案
查-无此人
校验提示文案
追风的小明
one,有没有推荐的升级方案,双网口,4SATA
校验提示文案
appleman44
校验提示文案