经过一番纠结,最后还是决定购入 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/jellyfinsudo 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/jellyfinsudo 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:/#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:/#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%+ 。
控制台 – 插件 – 目录 中有若干插件,在此介绍我目前正在使用的两个:
动画党必备,对于很多动画,传统电影 db 中抓不到元信息,安装该插件在媒体类型为 电视节目 下会多出 Anidb 等几个元数据下载器,当然选择全钩上,但本人实测自带的 TVdb / Movie 往往能抓到中文的元信息,因此我建议将其放到后面作为补充。
下载视频字幕,需要注册账号,安装后在 控制台 – 插件 – 我的插件 – Open Subtitles ,点击 Register 按钮跳转到 https://www.opensubtitles.org,注册完账号后填入框中,否则无法使用该插件。
随后可以在电影的播放前界面选择修改字幕 – 搜索字幕:
找到想要的字幕下载即可:
每次都要手动输入路径很麻烦,能不能像群晖自带套件那样在桌面点一个图标就进入?可以!
Jellyfin 作为 Emby 的 “开源社区版”,界面上继承了 Emby 的美观,该有的功能也都有,然而在折腾过程中,我发现以下问题:
- 没有 iOS 客户端支持,Emby iOS 版也封杀了对处于 “老版本” 的 Jellyfin 的支持
- 网页播放视频时,有一定概率卡住无法播放,需要刷新网页
- 搜刮器搜刮过程总是卡在 90%+,并且搜刮过程会打一些 error log ,看 github 上有相应的 issue 但很久都没得到解决
虽然折腾 Jellyfin 折腾了好几天,但鉴于我自己的使用场景,最终还是选择了 Plex + Infuse 的方案,欲知后事如何,请听下回分解。
原文链接:https://www.binss.me/blog/install-jellyfin-in-synology-nas/