最近清理服务器,发现 Jellyfin
已经很久没升级了,主要是老苏习惯直接用 samba
,而且对海报墙没啥需求。
群晖上安装 Jallyfin
的教程非常多,但用群晖的 docker
管理器安装并不能启用硬件加速,因为硬件加速需用 device
挂载显卡,老苏准备用 portainer
+ docker-compose
来试试。
用群晖的
docker
管理器也是可以的,只是需要先导出容器设置
到本地,按下面的内容修改完devices
后再导入
"devices" : [
{
"CgroupPermissions" : "rwm",
"PathInContainer" : "/dev/dri/renderD128",
"PathOnHost" : "/dev/dri/renderD128"
},
{
"CgroupPermissions" : "rwm",
"PathInContainer" : "/dev/dri/card0",
"PathOnHost" : "/dev/dri/card0"
}
],
什么是 Jellyfin ?
Jellyfin
是一套开源的多媒体应用软件,旨在组织、管理和共享数字媒体文件,是Emby
的一个免费开源分叉。Jellyfin
能自动刮削下载的电影所有信息,以海报墙的形式展示。用户只需要简单部署了服务端,其它的客户端就能轻松访问服务端的所有媒体文件。它还能在服务端转码,给不同的设备串流合适的内容。
准备
Jellyfin
支持硬件转码。关于硬件转码在『 用Dim搭建轻量级媒体服务器 』一文中只是简单介绍了一下如何快速检测自己的群晖是否支持,但实际情况要复杂的多。
Jellyfin
支持使用 FFMpeg
进行视频编码/解码的硬件加速 (HWA
)。FFMpeg
和 Jellyfin
可以通过 Video Acceleration API(VA-API)
支持多种硬件加速实现,例如: Intel Quicksync (QSV)
、AMD AMF
、nVidia NVENC/NVDEC
、OpenMax OMX
和 MediaCodec
。
VA-API
跟操作系统、硬件、驱动版本密切相关,更多的内容请查阅官方的文档:https://jellyfin.org/docs/general/administration/hardware-acceleration.html
老苏这次安装的目标机器是 DS918+
,一台只有集显的机器,型号应该是 Intel HD 5500
老苏找了个
Intel CPU&集显ID
速查速查手册:https://shuiyunxc.gitee.io/2020/04/01/Graphics/index/
上回已经用 ls /dev/dri
检查过,DS918+
支持硬件加速,这是硬件解码必要的基础
安装
在 docker
文件夹中,创建一个新文件夹,并将其命名为 jellyfin
,然后在其中再建 3
个子文件夹,分别为 cache
、config
和 media
官方 docker
使用硬件加速的示例直接用于群晖会有各种报错
- 每种硬件加速类型以及每种
Jellyfin
安装类型都需要不同的设置选项才能使用。最好查阅有关您选择的加速类型的FFMpeg
文档以获取最新信息:https://trac.ffmpeg.org/wiki/HWAccelIntro - 之所以要使用主机模式进行联网,是为了使用
DLNA
。 - 群晖的权限和其他
linux
主机有所不同
而老苏的群晖上 /dev/dri/renderD128
的所有者并不是官方说的 render group
基于上面的原因,老苏修改了官方的示例,在支持硬件转码的集显机器上可以试试用下面👇这段脚本
这台机器的
docker
目录在volume1
上,注意根据自己的修改
version: "3"
services:
jellyfin:
image: jellyfin/jellyfin
container_name: jellyfin
network_mode: "host"
volumes:
- /volume1/docker/jellyfin/config:/config
- /volume1/docker/jellyfin/cache:/cache
- /volume1/docker/jellyfin/media:/media
# 更多的媒体库
- /volume2/netdisk/AirDisk/USB-DISK-A:/airdisk
devices:
# VAAPI Devices
- /dev/dri/renderD128:/dev/dri/renderD128
- /dev/dri/card0:/dev/dri/card0
restart: unless-stopped
在 poratiner
左侧菜单找到 Stacks
--> Add stack
将上面的内容贴入 Web editor
,别忘了填上 Name
Name
注意不要用大写字母和特殊字符
点最下面的 Deploy the stack
,然后等待完成
不出意外的话,在 Containers
中应该可以看到容器 jellyfin
正在 running
在群晖 Docker
管理器中也是一样的
- 日志中会有类似下面的内容,说明
DLNA
启动成功
- 不支持硬件转码的机器上用上面那段会报错:
no such file or directory Encountered errors while bringing up the project
,所以要去掉devices
的部分,或者直接用常规的方法进行安装
运行
在浏览器中输入 http://群晖IP:8096
就能看到设置向导界面
完成设置后需要登录
进入控制台
--> 播放
--> 硬件加速
,默认 硬件加速
是 无
,相当于是软件转码
选择 Video Acceleration API(VAAPI)
,这个相当于是硬件转码
老苏本来还想试试 Intel Quick Sync
,但在播放时会报错
报错的原因是没有安装
Intel
的驱动,如果你有兴趣可以等着看下一篇(升级篇)
测试
老苏找了个 4K
的片源做测试,影片信息如下:
选 VAAPI
时日志中的相关显示
网页端的播放信息
软件转码,只能到 21
帧
硬件转码(VAAPI),可以到 32
帧
容器资源使用情况
软件转码基本上已经爆表
硬件转码(VAAPI)也不算低
字体
可以进入容器内安装字体,需要的空间比较大
# 更新源
apt update
# 安装字体
apt install -y fonts-noto-cjk-extra
安装特别耗时间
安装完成后需要重启容器,还需要在封面图上选择 修改图片
,并删除已有的封面图。
然后重新扫描媒体库,生成的新的封面就 OK
了
参考文档
jellyfin/jellyfin: The Free Software Media System
地址:https://github.com/jellyfin/jellyfinJellyfin: The Free Software Media System
地址:https://jellyfin.org//dev/dri/renderD128 owned by “render” group on some hosts · Issue #105 · dlandon/zoneminder.machine.learning
地址:https://github.com/dlandon/zoneminder.machine.learning/issues/105Intel CPU&集显ID速查(7月30日更新) | 独行秀才的老窝
地址:https://shuiyunxc.gitee.io/2020/04/01/Graphics/index/How to install Jellyfin on a Intel-based Synology docker with a working Intel Quick Sync (H/W transcoding) : jellyfin
地址:https://www.reddit.com/r/jellyfin/comments/r9k8mk/how_to_install_jellyfin_on_a_intelbased_synology/