Nyanmisaka/Jellyfin最新版本230901:低电压模式、转码效率与色调映射
前言
之前的文章介绍了大神Nyanmisaka的特供版Jellyfin,主要提升在硬解和色调映射(HDR转SDR)效率。今年9月(2023年9月),Nyanmisaka大神的jellyfin更新到了230901版本,继续在硬件转码上提升性能。如果你对使用Docker部署Jellyfin感兴趣,可以阅读以下两篇文章。
本文目的:
对比了Nyanmisaka/Jellyfin的221029版和230901版的转码效率;
开启核显的低电压模式,进一步验证该模式对转码效率的提升;
Jellyfin中的色调映射与Potplayer对比。
本文部署的软硬件环境:
操作系统:Ubuntu 20.04 ,内核版本内核版本5.4.0-165-generic
CPU: J4105,4核4线程,1.50 GHz,核显:HD600
整个平台日常运行功耗为5w左右(〔日常〕的定义:不开启jellyfin)
镜像
关于镜像拉取,必须要带上tag,即nyanmisaka/Jellyfin:tag,不能忽略tag或者使用latest。
docker pull nyanmisaka/jellyfin:230901-amd64
由于一些众所周知的网络问题,下载这个镜像还是有点不容易。我没有科学办法,硬拉,试了好几天终于给拉下来了。据说把国内镜像加速关掉后,使用latest可以拉取到最新的镜像,这个我没试过。

将jellyfin容器启动后,进入控制台可以看到版本是10.8.10,之前221029-amd64对应的jellyfin版本是10.8.6。

进入到容器,可以看到ffmpeg版本是6.0,这个版本是当前最新的稳定版。之前221029-amd64镜像中的ffmpeg版本是5.1.2。
ffmpeg 6.0配置低电压模式
低电压模式需要操作系统加载GuC/HuC两个固件,GuC与核显负载的调度有关,HuC可以将有些工作让GPU来完成,减少CPU与GPU的同步。以上为Intel官方的解释。个人认为开启低电压模式(Low Power Mode,LP Mode)与CPU硬件和Linux内核版本是有关系的,太旧的内核版本可能存在问题。
Jellyfin官方对低电压模式有一段说明:
The setup is not necessary unless you are using an Intel Jasper Lake or Elkhart Lake processor, or you want faster OpenCL tone-mapping speed on Linux. This also applies to the bleeding edge hardware such as 12th Gen Intel processors, ARC GPU and newer but step 2 should be skipped.
官方指出,本项设置不是必须的。也提到开启低电压模式后,对色调映射(tone mapping)的效率有一定的提升。另外,如果CPU是N5105,也需要配置低电压模式,否则Jellyfin的硬件加速将无法正常使用。
个人认为如果CPU性能比较够用了,不需要再配置低电压模式,因为配置是否顺利与操作系统、Linux内核、CPU有一定关系,最新版Nyanmisaka的特供版Jellyfin在不开启低电压模式下已经基本够用了。但是,我的J4105实在有点弱,指望通过开启低电压来提升硬件转码效率。
操作系统开启低电压模式
以下操作参照Jellyfin官方的指引:
1. 安装firmware:
apt install -y linux-firmware
firmware2. 将guc的设置写入配置文件i915.conf (可以写入时直接创建该文件):
sudo sh -c "echo 'options i915 enable_guc=2' >> /etc/modprobe.d/i915.conf"
i915.enable_guc=1 ## 启用GuC提交和电源管理
i915.enable_guc=2 ## 只启用HuC认证
i915.enable_guc=3 ## 将两个功能结合在一起
enable_guc=23. sudo update-initramfs -u

4. 更新grub:
sudo update-grub

5. 重启主机:reboot
验证是否加载成功:

上图中看到glk_guc_33.0.0.bin submission: disabled,但是查看guc_load_status又是running。上面对enable_guc的参数值(1,2,3)也做了解释。网上有文章也遇到相同情况:“如果i915.enable_guc=2,GuC submission会是disabled”。实际使用体验低电压模式是有效果的,具体见下面的测试。
sudo cat /sys/kernel/debug/dri/0/i915_guc_load_status
guc statussudo cat /sys/kernel/debug/dri/0/i915_huc_load_status
huc status以上两张图表明,加载Guc/Huc是成功的。
Jellyfin配置
在Jellyfin的控制台->播放页面下,硬件加速选择“Intel QuickSync(QSV)”,勾选“启用低电压模式”的两个选项。

开启色调映射,将HDR转换为SDR。色调映射会占用一部分核显性能,因此开启后转码效率会降低。开启色调映射,在不支持HDR的显示器播放HDR视频不会出现画面发灰的情况。
Jellyfin中选择“启用色调映射”,我选择了Mobius算法,参数默认。因为效率问题,不推荐使用VPP色调映射,所以上面“启用VPP色调映射”不要勾选。

视频实测
验证低电压模式
Jellyfin播放4K H265视频,使用intel_gpu_top命令查看核显工作情况(如果命令不存在,那么安装sudo apt install intel-gpu-tools)。当未开启低电压模式时,Render负载一直在90%以上;开启低电压模式后,Render负载下来了,大概维持在60~70%。
未启用低电压模式
启用低电压模式转码帧率实测
测试视频概况
在四个视频上测试nyanmisaka/jellyfin:230901的转码效率,与nyanmisaka/jellyfin:221029进行对比,并且记录开启低电压模式(LP Mode)前后转码帧率,验证低电压模式对转码效率的提升。
前三个测试视频格式如下,都是4K/HDR/H265,码率一般,第四个是高码较高。这四个视频对于我这个硬件平台来说还是有点困难的。
测试视频
测试视频221029版本 vs 230901版本
相比去年的221029版本,目前最新的230901版本在其中三个视频上转码效率上有所提高。以《FAST10》为例,在开启色调映射的情况下,从25fps提高到了37fps。对于高码率的,两个版本的转码帧率持平。
221029 vs 230901 on <FAST10> without LP mode
221029 vs 230901 on <PI> without LP mode色调映射对转码帧率的影响
实测开启色调映射(Mobius),对转码帧率有比较大影响。以《PI》为例,直接从36fps降到了25fps。所以色调映射还是比较消耗核显性能,至少对于这块J4105来说是这样。

低电压模式
所有四个视频,在开启低电压模式(加载GuC/HuC)后,转码效率都有提升情况。以《FAST》为例开启后,转码帧率确实有提升,开启低电压模式,CPU负载也有所降低,开启时为40~50%,未开启时为50%~55%。
with and without LP-mode on <FAST10>对于高码率的视频《Transformers》,在不开启LP mode情况下,转码帧率<视频帧率,开启LP mode的情况下,勉强可以流畅播放。
with and without LP-mode on <Transformers>实测小结
以下为实验数据汇总:记录了开启色调映射情况下,221029、230901两个版本nyanmisaka/jellyfin的转码帧率实测数据,后两列还对比了未开启低电压模式与开启情况下的转码帧率。
总体来说,这个硬件播放4K/HDR还是比较吃力的,转码帧率都比较低。
(为保证数据相对准确,对每个视频的相同时间点进行记录,且保证播放一段时间转码帧率已趋于稳定)
实测结果色调映射:Jellyfin vs Potplayer
这部分是偶然想到加上的测试。主观上对两者色调映射(tone mapping)结果进行对比,没有优劣之分,纯粹主观感受。Jellyfin中选择Mobius算法(默认参数),Potplayer使用MadVR Measure。


从画面来看,Jellyfin(Mobius)比madVR更加鲜艳,亮度更高,但是细节不如madVR丰富。比如《PI》中远处的波浪纹理,由于Mobius将亮度拉的过高导致细节被抹平了,但是madVR保持的比较好。当然这也不是madVR最好的效果,只是我粗调的结果。madVR参数可见我之前的一篇文章。
总结
在本文使用的软硬件环境下:
nyanmisaka/jellyfin:230901确实比221029版本在转码效率上有所提高;
开启核显的低电压模式(加载GuC/HuC),对转码效率有所提高;
在使用最新版本以后,J4105硬件平台对于一般码率(30Mbps以下)4K/HDR视频基本上能实现流畅硬件转码,包括色调映射(虽然转码帧率不高);
对于高码率4K/HDR视频,需要开启低电压模式,否则无法流畅播放。
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案