家用小服务器 篇五:Docker部署Jellyfin,并开启QSV硬件加速--J4105小主机能否胜任家庭影音中心?
硬件环境: 这个系列的工控板,J4105,核显HD600
操作系统: Ubuntu 20.04
Jellyfin:10.8.0
目标: 部署Jellyfin容器,并开启硬件加速 (Intel Quick Sync Video,QSV)
0. 英特尔QSV简介
根据intel官方说明:
英特尔快速视频同步技术(Intel Quick Sync Video, 简称QSV)运用英特尔® 显卡技术的专业媒体处理能力,加快编码解码速度,同时支持处理器完成其他任务,提供出色的 PC 性能和响应速度。
为什么使用QSV:
1. 硬件加速和色调映射性能比VAAPI好
2. Intel核显专有技术(买了intel cpu为什么不用起来)
1. 关于在Jellyfin中使用QSV
根据jellyfin官方文档说明:开启qsv需要jellyfin-ffmpeg的版本4.4.1-2及以上
Make sure that jellyfin-ffmpeg version 4.4.1-2 or higher is installed (it ships the current version of intel-media-driver (iHD) which is required for QSV).
To use QSV on Linux with recent Intel iGPUs the nonfree Intel media driver is required for full hardware acceleration.If you are using jellyfin-ffmpeg version 4.4.1-2 or higher it is included and you do not need to install it seperatly.
之前我在NAS上一直是使用jellyfin 10.7.7镜像,需要手工升级ffmpeg版本至4.4.1,才能开启qsv加速。后来看到站内分享使用镜像nyanmisaka/jellyfin,nyanmisaka大神已经将jellyfin内嵌的ffmpeg升级到了4.4.1,安装了核显驱动,因此可以直接使用intel QSV,让使用Jellyfin硬解和色调映射变得非常简单。nyanmisaka本人介绍: “Linux 下,对于 Intel 核显,建议优先使用 QSV 而非 VAAPI,QSV 通常能提供更高的吞吐量”。本文使用nyanmisaka大神制作的jellyfin镜像,将过程和播放实测记录下来。
2. Docker部署Jellyfin
首先要给 /dev/dri/renderD128 赋予执行权限,以下直接777一步到位。
ls -l /dev/dri/
# 存在renderD128,并赋予执行权限
# 注意:重启后需要重新赋权,后续改进
sudo chmod 777 /dev/dri/renderD128
拉取镜像
docker pull nyanmisaka/jellyfin:latest
实际版本是10.8.0正式版
启动容器
docker run -d
--name=jellyfin
-p 32778:8096 -p 32770:8920
-v /home/containers/jellyfin:/config
-v /mnt/hdd_hikvision/movies:/media
--device /dev/dri/renderD128:/dev/dri/renderD128
--device /dev/dri/card0:/dev/dri/card0
--add-host api.themoviedb.org:52.84.18.87
--add-host api.themoviedb.org:54.192.18.90
nyanmisaka/jellyfin:latest
以上脚本不要照抄,注意映射的目录需要符合自己的系统环境。
-v参数将宿主机的两个目录映射到容器内目录,分别对应config(jellyfin的配置信息)和media(媒体文件信息)。
--add-host参数将域名api.themoviedb.org (TheMovieDb)对应的ip放到容器中的hosts文件中,用于拉取影片信息(刮削),具体ip可以在站长工具中查到。
--device将之前赋予执行权限的核显设备映射到容器中,使容器可以直接使用核显
部署完成后进入容器,可以看到ffmpeg版本是4.4.1,实测是可以使用QSV。
nyanmisaka/jellyfin容器里的ffmpeg版本
3. 配置Jellyfin
进入jellyfin页面: http://host-ip:32778,这个端口号是启动容器时通过-p参数映射到宿主机的。
3.1 初始化Jellyfin
选择语言
设置用户名和密码,用于jellyfin登录
开始创建一个媒体库
选择文件夹,即之前启动容器时-v /mnt/hdd_hikvision/movies:/media指定的容器内目录/media,这个目录已经和宿主机的目录/mnt/hdd_hikvision/movies进行了映射,我的电影放在了这个目录下。
选择【首选下载语言】和【国家/地区】
选择媒体数据库,用于影视信息的刮削,一般TheMovieDb就够用了,域名和ip已经在容器启动时通过--add-host参数指定了。
到这里,第一个媒体库【电影】就创建完毕了
点击媒体库【电影】右下角的三个点,通过<刷新元数据>可以从"The Movie Database"(TMDB)上搜刮电影信息。前提是电影文件名符合一定的规范,这个超出本文需要讨论的范围了,当然也存在其他更好的方法。
如果某一部电影信息下载不成功或者匹配错误,可以通过点击海报右下角菜单中的<识别>进行手工搜索。
至此,Jellyfin的初始化结束。
3.2 设置硬件加速及色调映射
硬件加速就是使用GPU来完成视频的解码,对于没有独立显卡的主机来说就是用CPU核显。如果不开启硬解,会使用CPU进行软件解码,导致CPU负载过高且解码效率较低。
色调映射(Tone Mapping)是用于将HDR视频转为SDR输出,这样在非HDR输出设备上观看HDR电影不至于画面过于灰暗,这也需要用到显卡/核显的功能。
以上是我对硬件加速和色调映射的粗浅认识,下面进入设置。
【管理】->【控制台】->【播放】
<硬件加速>选择Intel QuickSync (QSV)
将媒体编码格式都选上
选择<启用色调映射>,根据站内文章测试,OpenCL要比VPP效果更好。如果同时勾选了<启用VPP色调映射>和<启用色调映射>,那么会优先启用VPP而不使用OpenCL。
至于具体选择哪种色调映射算法以及具体参数如何调节,可以参考站内“达文牛”的文章,看完一定会受益匪浅。
4. 实际播放
4.1 硬解
记录cpu在开启qsv加速和未开启时的使用情况,测试视频1:H264/1080P/8bit/SDR视频,码率为约19Mb/s。
当开启qsv加速时,cpu使用率一般在30%~50%左右波动(finalshell界面上显示的cpu负载百分比)。以下图是cAdvisor中系统监控界面,在硬解开启时4个核各自稍有不同,总体还算稳定。一旦关闭硬件加速,cpu使用率会飙到近100%,下图中可以看到每个核的load几乎都到1了,可见软解是多么费cpu资源。
经过30分钟播放,cpu温度从35℃上升到56℃,一直稳定在53~56℃之间。小主机功耗在10W左右(软解功耗13W)。
测试视频2:H265/4K/10bit/SDR,码率为约36Mb/s,硬解帧率为37fps,播放和拖动都没有问题。CPU负载在50%左右。
测试视频2(4K/H265/SDR):QSV加速,转码37fps
对视频2进行转码,目标分辨率1080P和码率10Mbps(原:4K/36Mbps),转码帧率为90+fps。
4.2 色调映射
实测视频分别是低码率和高码率的H265/HDR的两部电影。
测试视频1:1080P/H265/10bit/HDR,低码率,色彩映射算法选择BT.2390。
在不支持HDR的显示器上打开HDR视频,色彩会比较灰暗(下图右),开启色调映射(BT.2390)后有显著改观。
未开启色调映射转码帧率:107 fps,开启后只有53fps(BT.2390)/59fps(Hable)/Mobius(64fps),映射算法参数都采用默认值。使用Reinhard算法后播放卡顿,无法拖动,所以不在测试结果之列。
默认参数下,主观感受Mobius亮度最高,Hable比较暗,默认的BT.2390折中,比起未开启色调映射时的画面都有明显提升。
测试视频2: 4K/H265/10bit/HDR/24Mbps,开启色调映射后,fps只有15~17,无法正常播放,不开启色调映射的情况下能以30fps的转码帧率勉强播放。猜测是因为J4105的HD600太弱了,站内达尔牛文章使用8代i5 CPU来对4K HDR是几乎无压力的。
测试视频2想要正常播放,需要转码到1080P/20Mbps以下,此时转码帧率可以达到30+fps。有个疑问:如果加载了字幕转码原因“只显示字幕编码不支持”(下图左),如果不加载字幕则会显示“视频比特率超过限制”(下图右)。
以下是VPP映射与OpenCL映射的对比(视频2)。主观感受上VPP会比较暗一些,OpenCL亮度更舒服。
5. 结论
对于以J4105及其核显作为核心的小主机,勉强可以作为普通家庭媒体中心。通过nyanmisaka/Jellyfin播放测试可以得知,在对于4K/SDR/30帧视频基本可以无压力播放。当开启色调映射,且需要HDR转SDR的场景下,高码率4K/HDR视频无法流畅播放,需要转码到低分辨率。所以,对于要求不高的场景,J4105这颗低功耗U可以胜任媒体中心的角色。
(JD价格不做参考)
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~
NyanMisaka
校验提示文案
摩羯不着调
校验提示文案
杯具上演帝
校验提示文案
值友9639995515
校验提示文案
爱自嗨的攻城狮
校验提示文案
值友2277095634
校验提示文案
值友2277095634
校验提示文案
NyanMisaka
校验提示文案
爱自嗨的攻城狮
校验提示文案
值友9639995515
校验提示文案
杯具上演帝
校验提示文案
摩羯不着调
校验提示文案