基于 Jellyfin 打造家庭影音中心
Jellyfin 是一款开源免费的媒体服务器软件,发现功能十分强大,刮削器比 VideoStation 给力多了,这次改造的目标是:
- NAS 安装 Jellyfin 并实现硬解转码
- 内网连接使用 Kodi 直传
- 外网连接使用实时转码
遇到的坑
家里的群晖是 DS418Play,CPU 为 J3355,支持硬解,离线安装 docker 后按照网上的通用教程,在 Docker 内搜索 jellyfin/jellyfin
直接配置安装,发现根本实现不了硬件转码。播放视频时 CPU 飙到 100%,折腾了一个通宵,把 GPU 驱动、ffmpeg 版本、文件权限都检查过了,最后发现是 Docker 的原因:
Docker 默认不会加载 GPU 驱动文件,要在容器启动前先映射
Docker 创建容器时的图形界面,在环境一栏尝试增加 --device /dev/dri/renderD128
依旧无法加载驱动文件,使用命令行方式的安装就正常
安装过程
检查显卡驱动
SSH 登录到群晖,输入 ls /dev/dri
,如果查询到目录下存在 renderD128
则表示显卡驱动已安装,否则是不能硬解的。
1 | ls /dev/dri |
创建文件目录
在 Docker 共享文件夹内新建 jellyfin
文件夹,为 everyone
用户分配读写权限,在文件夹内新建两个文件夹:
- cache:用于存放 jellyfin 缓存文件
- config:用于存放 jellyfin 配置文件
安装 Jellyfin
SSH 登录到群晖,使用以下指令安装,其中 /volume1/video
是存放视频的共享文件夹,/volume1/docker/jellyfin
是刚才创建的文件目录
1 | //切换到root账户 |
检查驱动装载
通过 docker ps
获取 jellyfin
的 ID,然后切换到容器环境下检查显卡驱动
1 | //切换到root账户 |
输入 ls /dev/dri
后观察输出结果,如果目录下存在 renderD128
则表示驱动已加载,否则回头看一下是不是哪些地方输错了,重新试一下,最后 Ctrl+D
退出容器环境
配置 Jellyfin
通过 Nas地址:8096
进入 jellyfin
, 在转码页面选择硬件加速为 VA API
, 同时勾选硬件编码
,就实现 GPU 硬件转码了,实测 1080P 视频实时转码时,CPU 占用在 50% 以下。其他设置项网上教程很多,这里不再展开。
内网直传
内网机器安装 Kodi 播放器,通过 Kodi 链接 Jellyfin 服务器获取影视资源,这一步比较简单,根据官方 Wiki配置即可,简单翻译一下步骤
- 下载 jellyfin 的 kodi 插件:repository.jellyfin.kodi.zip
- 下载 Kodi 安装包并安装:官网地址
- 打开 kodi
设置-系统-插件
,允许未知来源
,然后返回设置-插件
,从Zip文件安装
,选择第一步下载的 zip 包 - 返回
设置-插件
,从库安装
,选择 Jellyfin - 视频插件 - 安装完成,配置服务器为
Nas地址:8096
,登录即可
外网访问
如果家里的网络有公网 IP,在路由上做好 DDNS,端口映射,然后外网使用域名:映射端口号
就能访问到媒体库了,外网主要是手机在用,jellyfin 有安卓客户端,有了实时硬件转码,手机播放就很流畅了
应用 | 感受 |
---|---|
VideoStation | 刮削器不给力,手机播放有时候会黑屏 |
Plex | 到处都要收费,没钱! |
Jellyfin | 实时转码,有折腾的价值 |