Docker安装jellyfin开启硬件解码

发布于 2020-01-13  3254 次阅读


Jellyfin媒体服务器简介

Jellyfin是一个自由软件媒体系统,可让您控制媒体的管理和流媒体。它是专有的Emby和Plex的替代品,可通过多个应用程序从专用服务器向终端用户设备提供媒体。Jellyfin是Emby 3.5.2版本的后代,移植到.NET Core框架以支持完整的跨平台支持。没有任何附加条件,只是一个团队想要更好地构建更好的东西并共同努力实现它,致力于让所有用户都能访问最好的媒体系统。

Docker内安装jellyfin/jellyfin开启硬件解码

Docker内搜索jellyfin/jellyfin直接配置安装,发现根本实现不了硬件转码。播放视频时 CPU 飙到 100%,把 GPU 驱动、ffmpeg 版本、文件权限都检查过了,最后发现是 Docker 的原因:

Docker 默认不会加载 GPU 驱动文件,要在容器启动前先映射

图形界面的搭建没法指定容器转载核心显卡的文件。

使用命令行方式的安装就正常。

jellyfin/jellyfin安装过程

检查显卡驱动

SSH 登录到群晖,输入 ls /dev/dri,如果查询到目录下存在 renderD128 则表示显卡驱动已安装,否则是不能硬解的。

ls /dev/dri

Docker创建文件目录

在 Docker 共享文件夹内新建 jellyfin 文件夹,为 everyone 用户分配读写权限,在文件夹内新建两个文件夹:

cache:用于存放 jellyfin 缓存文件

config:用于存放 jellyfin 配置文件

Docker安装 Jellyfin

SSH 登录到群晖,使用以下指令安装,其中 /volume1/video 是存放视频的共享文件夹,/volume1/docker/jellyfin 是刚才创建的文件目录。

-p 8096:8096一行中:第一个8096支本地的端口,第二个8096指jellyfin的内部端口,我在安装时由于之前安装了EMBY,占用了8096端口,所以这一行需要改掉第一个8096为其他端口。

//切换到root账户

sudo su

//下载jellyfin映像

sudo docker pull jellyfin/jellyfin 

//运行容器,两行-p是HTTP和HTTPS端口,根据自己的需要设置

sudo docker run -d --name jellyfin \

-v /volume1/docker/jellyfin/config:/config \

-v /volume1/docker/jellyfin/cache:/cache \

-v /volume1/video:/video \

-p 8096:8096 \

-p 8920:8920 \

--device=/dev/dri/renderD128 \

--restart unless-stopped \

jellyfin/jellyfin

检查驱动装载

通过 docker ps 获取 jellyfin 的 ID,然后切换到容器环境下检查显卡驱动

//切换到root账户

sudo su

//显示容器列表,在输出结果中找到jellyfin的CONTAINER ID,记下来,假设是:745de62cbd31

docker ps

//进入容器环境

docker exec -it  745de62cbd31  /bin/bash

//检查显卡驱动

ls /dev/dri

输入 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 有安卓客户端,有了实时硬件转码,手机播放就很流畅了

翡讯N1安装jellyfin媒体服务器CPU使用率100%

今天要说下关闭jellyfin转码的问题

有些网友在N1上装好jellyfin后,直接通过jellyfin的客户端(目前官方只有安卓版本)或网页看电影,但很容易卡顿,通过性能监测软件查看N1,结果发现cpu使用率已经达到100%,后来分析是因为jellyfin自动开启转码功能导致的,但又找不到怎么关闭转码。

这里也是在reddict论坛上jellyfin的专区找到的答案,也是让老子好一顿找。我只是在docker jellyfin中试过,其他的不知道能不能行,应该差不多。

网页登陆jellyfin的管理页面,点击左侧的dashboard仪表盘,然后点击“用户”,右侧出来用户后,点击用户方块右下方那三个点“…”,然后在跳出的菜单中点击“打开”,然后你会看到一大堆从未见过的设置选项,将以下的三个选项的对勾去掉,就彻底关闭转码了。

Alow audio playback that requires transcoding

届ける言葉を今は育ててる
最后更新于 2022-09-16