本文发自 http://www.binss.me/blog/install-jellyfin-in-synology-nas/,转载请注明出处。
缘起
最近发现放在家中的黑群晖 (见 我的黑群晖 NAS 折腾日记 ) 挂了,折腾了一个晚上还是没能恢复,由于工作后实在没有太多精力来折腾黑群晖了,索性决定购入群晖。
经过一番纠结,最后还是决定购入 DS918+ ,原因如下:
- 四盘位,支持额外插两条 nvme SSD 加速,支持再插一条内存
- J3455 ,在群晖的一众渣渣 CPU 还算能用,能硬解 4k
- 国行三年保修
咬咬牙花了 3700 大洋上了车。把黑群晖里原来的四块硬盘(虽然暴风云只有两个盘位,但有四个 SATA 口,我把两块 2.5寸 SSD 塞到机身里面了),结果发现四个硬盘灯有一个没亮,一波研究,发现是原来装黑群晖系统和引导的那块 SSD 挂了,尼玛导致我多花 3k 大洋的凶手是你,三棒子 860 EVO !
既来之则安之,尝试到白裙自带的 quick connect 服务后,我不由说了一句真香,开始认真折腾起来,其中重要的一项是作为媒体服务器为其他如 电视、PC、iPad 等设备提供片源。以往我是在设备上通过 Webdev 挂载到相应的目录下通过如 nplayer 之类的播放器进行播放,但随着视频文件的增多,这种基于文件夹的视频管理方式越来越不方便,能不能实现一种更直观、更方便的多媒体播放方案?网上一搜,原来群晖的 Video Station、Plex、Emby 都是干这个的。
经过一番考察,发现 Plex 、 Emby 价格太高玩不起,群晖自带的 Video station 功能太简陋,最后选择了新出的 Jellyfin ,它是社区看不惯 Emby 收费后另起炉灶、基于 Emby 3.5.2 搞出来的多媒体管理服务,界面看上去很不错。
安装
可惜的是,群晖的套件中心中没有 Jellyfin ,我们转而通过 docker 来安装:
docker - 注册表 (这机翻) 中搜索 jellyfin ,下载,下载完成后在映像中能看到该 image 。由于我们需要硬件解码,因此需要将 /dev/dri/renderD128 设备映射到容器中去,但我在界面上没找到指定 device 的方法,因此我们开启群晖 ssh 服务后登陆到上面去,通过命令启动 Jellyfin 容器:
sudo docker run -d --name jellyfin \
-v /volume1/docker/jellyfin:/config \
-v /volume3/Media:/media \
-p 8096:8096 \
-p 8920:8920 \
--device=/dev/dri:/dev/dri \
--restart unless-stopped \
--network host \
jellyfin/jellyfin
这里 /volume1/docker/jellyfin 是 Jellyfin 用于存放配置和数据的目录,需要预先在 File Station 中创建好并设置 Everyone 都能访问:
而 /volume3/Media 是我存储视频文件的目录,可以根据需要选择替换为自己的目录。
这里暴露两个端口,8096 为 http,8920 为 https 。
启动容器后,通过 docker exec -it jellyfin bash
进入到容器中,确定 /dev/dri
中的设备文件被成功映射:
root@1d1570cdc79a:/# ll /dev/dri/
total 0
drwxr-xr-x 2 root root 100 Sep 14 03:54 ./
drwxr-xr-x 6 root root 360 Sep 14 03:54 ../
crw------- 1 root root 226, 0 Sep 14 03:54 card0
crw------- 1 root root 226, 64 Sep 14 03:54 controlD64
crw------- 1 root root 226, 128 Sep 14 03:54 renderD128
root@1d1570cdc79a:/#
随后可以在群晖 UI 的 docker - 容器 中看到该容器。
配置
初始化
访问 http://群晖ip:8086
打开 Jellyfin 管理界面,注册账号、一路保持默认 next 后初始化完成,进入主界面。
添加媒体库
控制台 - 媒体库 - 添加媒体库:
选择相应的媒体类型,如 电影,然后点击文件夹旁边的加号添加文件夹,输入路径,注意该路径为容器中的路径,比如原来是 /volume3/Media/Movie
的需要填入 /media/Movie
,填对后下方会列出该目录下的文件列表,点击确定即可:
随后选择媒体库设置中的首选下载语言和国家,以及勾选元数据下载器(推荐有多少勾多少),这几个选项决定了抓下来的视频元数据信息的来源和语言。最后,建议勾选 将媒体图像保存到媒体所在文件夹
,会把下载下来的视频信息的图片和视频放到一起,方便编辑。
注意,Jellyfin 下载元信息图片的方式是按需下载,极端情况下直到你打开视频要播放时才会下载,在此之前你的视频元信息图片可能都不会下载,最典型的表现就是没有视频的封面!反正我是不能忍,为此勾选 显示高级设置,会出现 提前下载图片 选项,勾选即可。
OK 后点确定即可,会发现在跑一个进度条,这表示 Jellyfin 开始扫描目录下的电影文件,并根据文件名等信息联网下载元数据。注意这个抓取过程可能很漫长,一方面是元数据网站做了限流,刮削器在抓取过程中比较节制,另一方面是因为国内某些网络无法连接到这些网站,这个时候可以考虑走代理,方法很简单,为 Jellyfin 容器指定 http 代理的环境变量即可:
这里 http://192.168.10.60:6152 是我本地的 http 代理,至于怎么搭代理,本文不做阐述。
硬件加速
由于 DS918+ ,其 CPU 支持硬解,在前面我们也将相应的 device 目录挂载进容器中了,在此我们进行配置:
控制台 - 转码 ,如下设置:
实测在开启硬件加速后,浏览器播放 1080P 视频时的 CPU 占用率从 90%+ 降到 20%+ 。
安装插件
控制台 - 插件 - 目录 中有若干插件,在此介绍我目前正在使用的两个:
Anime
动画党必备,对于很多动画,传统电影 db 中抓不到元信息,安装该插件在媒体类型为 电视节目 下会多出 Anidb 等几个元数据下载器,当然选择全钩上,但本人实测自带的 TVdb / Movie 往往能抓到中文的元信息,因此我建议将其放到后面作为补充。
Open Subtitles
下载视频字幕,需要注册账号,安装后在 控制台 - 插件 - 我的插件 - Open Subtitles ,点击 Register 按钮跳转到 https://www.opensubtitles.org,注册完账号后填入框中,否则无法使用该插件。
随后可以在电影的播放前界面选择修改字幕 - 搜索字幕:
找到想要的字幕下载即可:
桌面快捷方式
每次都要手动输入路径很麻烦,能不能像群晖自带套件那样在桌面点一个图标就进入?可以!
总结
Jellyfin 作为 Emby 的 “开源社区版”,界面上继承了 Emby 的美观,该有的功能也都有,然而在折腾过程中,我发现以下问题:
- 没有 iOS 客户端支持,Emby iOS 版也封杀了对处于 “老版本” 的 Jellyfin 的支持
- 网页播放视频时,有一定概率卡住无法播放,需要刷新网页
- 搜刮器搜刮过程总是卡在 90%+,并且搜刮过程会打一些 error log ,看 github 上有相应的 issue 但很久都没得到解决
虽然折腾 Jellyfin 折腾了好几天,但鉴于我自己的使用场景,最终还是选择了 Plex + Infuse 的方案,欲知后事如何,请听下回分解。
2020.02.22 更新:使用 Plex 搭建你的媒体库
1F a 5 years, 1 month ago 回复
看你写了半天,结果用了plex。我也是918+,也在纠结plex、emby和jellyfin,目前三个都装docker里了。不过我是安卓的盒子,还没尝试jellyfin和kodi的组合。硬件加速我开启了反倒有些之前能播放的1080p电影卡着不能播放了,4k的更不能播放,所以又关了。opensubtitles的插件安装重启后在我的插件中总是不显示,手动删了重新安装也不行
2F Roccoon 4 years, 11 months ago 回复
回复 [1F] a:918+可以直接安装Plex或者Emby,而且是支持硬件加速的。不过我用自带的VS还挺好用的,除了字幕有时候搜不出来。
3F binss MOD 4 years, 10 months ago 回复
回复 [2F] Roccoon:Plex 硬解好像要开会员
4F 一回 4 years, 10 months ago 回复
回复 [1F] a:x265 j3455 是无法硬解的,看看是否是这个问题?
5F lust 4 years, 10 months ago 回复
为什么用 plex ,我现在也是很纠结,求指导
6F sanchuan 4 years, 9 months ago 回复
哈哈哈哈 写了好多 最后换了plex 漂亮!
7F kk 4 years, 9 months ago 回复
要是不止一个文件夹下面有视频文件,怎么在SSH里指定Media文件夹呢?
8F binss MOD 4 years, 9 months ago 回复
回复 [7F] kk:创建容器时,增加更多的目录映射即可。如 `-v /volume3/Media2:/media2`
9F Pasi 4 years, 9 months ago 回复
Emmm Plex和emby都要会员才能硬解,我是从PLEX换到jellyfin的,PLEX我各平台的软件都买好了 结果cpu解码实在占用太大 只能换掉了。
10F binss MOD 4 years, 9 months ago 回复
回复 [9F] Pasi:Plex 的话 IOS 端有 Infuse 可以本地硬解
11F Pasi 4 years, 9 months ago 回复
回复 [10F] binss:因为我是用的i5 6500T做的第服务器 所以核显hd530是完全有能力在服务端解码后直接串流的
如果本地解码的话就失去了灵魂
12F hangaj 4 years, 8 months ago 回复
jellyfin 出现这个提示 客户端配置文件存在问题,服务器未发送兼容的媒体格式。有可能是啥情况啊,大佬给分析下
13F Ares 4 years, 7 months ago 回复
回复 [12F] hangaj:我也是这个情况,好奇怪,有的就播不了
14F Jokul 4 years, 6 months ago 回复
J4105可以硬解x265 4k. 用ssh命令行安装的可以硬解,用docker图形界面安装的jellyfin硬解报错。
15F jokul 4 years, 6 months ago 回复
回复 [12F] hangaj:显卡驱动加载不成功,要用ssh安装jellyfin
16F bluefountain 4 years, 6 months ago 回复
买前生产力买后都是下黄片 反正我下的正经电影一个没看过 XD
17F ardentwheel 4 years, 4 months ago 回复
又spk包了哦。https://github.com/publicarray/spksrc/releases/tag/jellyfin-10.6.0
18F 阿丁的梦呓 4 years, 3 months ago 回复
可以问一下吗,里面的 http 代理是怎么搭建的吗 ,有相关教程分享吗
19F binss MOD 4 years, 3 months ago 回复
回复 [18F] 阿丁的梦呓:那台机器装了 surge for mac,能提供局域网 http 代理
20F 阿丁的梦呓 4 years, 3 months ago 回复
如果我用本机的docker 搭建v2ray 服务(能够提供局域网http 代理),那我的对应的 http_proxy就是 http://127.0.0.1:10808 类似的方式咯?
21F 小白 3 years, 11 months ago 回复
配置好后,安装插件界面只转圈,安装不上。。
22F ethan 3 years, 10 months ago 回复
试了一下,之前用了http的环境变量,不生效,把https代理加上后,就可以刮削到了,之前的修改hosts,刮削奇慢无比
23F 周 3 years, 1 month ago 回复
请问下,指定媒体库的文件夹位置之后,只显示文件夹的一部电影,其他的都不显示,这是为什么呢
24F 周 3 years, 1 month ago 回复
我又试了一下,视乎是一次只显示一部,搜刮的问题?