Jellyfin转码和色调映射效率提升:开启处理器低电压模式(GuC/HuC)

本文主要是介绍Jellyfin转码和色调映射效率提升:开启处理器低电压模式(GuC/HuC),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Jellyfin转码和色调映射效率提升

  • 系统环境
  • 拉取nyanmisaka/jellyfin镜像
  • 开启低电压模式
  • Jellyfin配置
    • 开启QSV和低电压模式解码
    • 开启色调映射(基于OpenCL)
  • 实测
    • 验证低电压模式
    • 转码帧率实测
      • 测试视频概况
      • 221029版本 vs 230901版本
      • 开启色调映射的影响
      • 开启低电压模式
  • 总结

系统环境

  1. 操作系统: Ubuntu 20.04,内核版本5.4.0-165-generic
  2. 硬件:工控板
  3. CPU: J4105,1.5GHz, 核显UHD600
  4. Jellyfin: 镜像nyanmisaka/jellyfin:230901-amd64

本文验证J4105硬件平台能否顺畅播放4K/HDR视频(开启HDR转SDR的色调映射),为此部署最新的nyanmisaka版jellyfin,开启QSV硬件解码和低电压模式,将核显的性能尽量释放出来。
本文的重点是加载GuC/HuC固件,使Jellyfin能够开启低电压模式。然后通过实测验证开启低电压模式对转码效率是否有提升。

用于转码 4K HDR HEVC、VP9 10bit 视频的最低配置为 J4005 类似的代号为 GeminiLake 的处理器,即 UHD 600/605.
– by nyanmisaka

拉取nyanmisaka/jellyfin镜像

N大版jellyfin是一个开箱即用的 Docker 镜像,包含最新的驱动、jellyfin-ffmpeg、补丁、CJK 系统字体等。升级了QSV硬件解码和基于OpenCL的色调映射,在转码效率上有所有提升。
由于一些众所周知的网络问题,下载这个镜像还是有点不容易。我没有科学办法,硬拉,试了好几天终于给拉下来了。据说把国内镜像加速关掉后,使用latest可以拉取到最新的镜像,这个我没试过。
注意:拉取镜像必须指定tag,不能使用latest标签

sudo docker pull nyanmisaka/jellyfin:230901-amd64

在这里插入图片描述
nyanmisaka/jellyfin:23091-amd64对应的Jellyfin版本是10.8.10
在这里插入图片描述
进入到容器,可以看到ffmpeg版本是6.0,这个版本是当前最新的稳定版。之前221029-amd64镜像中的ffmpeg版本是5.1.2。
在这里插入图片描述

开启低电压模式

低电压模式需要操作系统加载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.安装固件

#安装固件
sudo apt update && sudo apt install -y linux-firmware

在这里插入图片描述

2.将GuC的设置写入配置文件i915.conf

# enable_guc=2
sudo sh -c "echo 'options i915 enable_guc=2' >> /etc/modprobe.d/i915.conf"

3.更新initramfs和grub

sudo update-initramfs -u
sudo update-grub

在这里插入图片描述
在这里插入图片描述
4.重启,验证

reboot
# GuC status
sudo cat /sys/kernel/debug/dri/0/i915_guc_load_status
# HuC status
sudo cat /sys/kernel/debug/dri/0/i915_huc_load_status

看到输出的status都是RUNNING,说明开启成功。
在这里插入图片描述
在这里插入图片描述

Jellyfin配置

开启QSV和低电压模式解码

在Jellyfin的控制台->播放页面下,硬件加速选择“Intel QuickSync(QSV)”,勾选“启用低电压模式”的两个选项。
在这里插入图片描述

开启色调映射(基于OpenCL)

开启色调映射,将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。对于高码率的,两个版本的转码帧率持平。
在这里插入图片描述
在这里插入图片描述

开启色调映射的影响

实测开启色调映射(Mobius),对转码帧率有比较大影响。以《PI》为例,直接从36fps降到了25fps。所以色调映射还是比较消耗核显性能,至少对于这块J4105来说是这样。
在这里插入图片描述

开启低电压模式

所有四个视频,在开启低电压模式(加载GuC/HuC)后,转码效率都有提升情况。以《FAST》为例开启后,转码帧率确实有提升,开启低电压模式,CPU负载也有所降低,开启时为40-50%,未开启时为50%-55%。

在这里插入图片描述
对于高码率的视频《Transformers》,在不开启LP mode情况下,转码帧率<视频帧率,开启LP mode的情况下,勉强可以流畅播放。
在这里插入图片描述
以下为实验数据汇总:记录了开启色调映射情况下,221029、230901两个版本nyanmisaka/jellyfin的转码帧率实测数据,后两列还对比了未开启低电压模式与开启情况下的转码帧率。总体来说,这个硬件播放4K/HDR还是比较吃力的,转码帧率都比较低。
(为保证数据相对准确,对每个视频的相同时间点进行记录,且保证播放一段时间转码帧率已趋于稳定)
在这里插入图片描述

总结

在本文使用的软硬件环境下:

  1. 开启核显的低电压模式(加载GuC/HuC),对转码效率有所提高;
  2. 在使用最新版本nyanmisaka/jellyfin镜像以后,J4105硬件平台对于一般码率(30Mbps以下)4K/HDR视频基本上能实现流畅硬件转码,包括色调映射(虽然转码帧率不高);对于高码率4K/HDR视频,需要开启低电压模式,否则无法流畅播放。

这篇关于Jellyfin转码和色调映射效率提升:开启处理器低电压模式(GuC/HuC)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/410546

相关文章

hadoop开启回收站配置

开启回收站功能,可以将删除的文件在不超时的情况下,恢复原数据,起到防止误删除、备份等作用。 开启回收站功能参数说明 (1)默认值fs.trash.interval = 0,0表示禁用回收站;其他值表示设置文件的存活时间。 (2)默认值fs.trash.checkpoint.interval = 0,检查回收站的间隔时间。如果该值为0,则该值设置和fs.trash.interval的参数值相等。

在JS中的设计模式的单例模式、策略模式、代理模式、原型模式浅讲

1. 单例模式(Singleton Pattern) 确保一个类只有一个实例,并提供一个全局访问点。 示例代码: class Singleton {constructor() {if (Singleton.instance) {return Singleton.instance;}Singleton.instance = this;this.data = [];}addData(value)

模版方法模式template method

学习笔记,原文链接 https://refactoringguru.cn/design-patterns/template-method 超类中定义了一个算法的框架, 允许子类在不修改结构的情况下重写算法的特定步骤。 上层接口有默认实现的方法和子类需要自己实现的方法

【iOS】MVC模式

MVC模式 MVC模式MVC模式demo MVC模式 MVC模式全称为model(模型)view(视图)controller(控制器),他分为三个不同的层分别负责不同的职责。 View:该层用于存放视图,该层中我们可以对页面及控件进行布局。Model:模型一般都拥有很好的可复用性,在该层中,我们可以统一管理一些数据。Controlller:该层充当一个CPU的功能,即该应用程序

迭代器模式iterator

学习笔记,原文链接 https://refactoringguru.cn/design-patterns/iterator 不暴露集合底层表现形式 (列表、 栈和树等) 的情况下遍历集合中所有的元素

java学习,进阶,提升

http://how2j.cn/k/hutool/hutool-brief/1930.html?p=73689

《x86汇编语言:从实模式到保护模式》视频来了

《x86汇编语言:从实模式到保护模式》视频来了 很多朋友留言,说我的专栏《x86汇编语言:从实模式到保护模式》写得很详细,还有的朋友希望我能写得更细,最好是覆盖全书的所有章节。 毕竟我不是作者,只有作者的解读才是最权威的。 当初我学习这本书的时候,只能靠自己摸索,网上搜不到什么好资源。 如果你正在学这本书或者汇编语言,那你有福气了。 本书作者李忠老师,以此书为蓝本,录制了全套视频。 试

利用命令模式构建高效的手游后端架构

在现代手游开发中,后端架构的设计对于支持高并发、快速迭代和复杂游戏逻辑至关重要。命令模式作为一种行为设计模式,可以有效地解耦请求的发起者与接收者,提升系统的可维护性和扩展性。本文将深入探讨如何利用命令模式构建一个强大且灵活的手游后端架构。 1. 命令模式的概念与优势 命令模式通过将请求封装为对象,使得请求的发起者和接收者之间的耦合度降低。这种模式的主要优势包括: 解耦请求发起者与处理者

JAVA用最简单的方法来构建一个高可用的服务端,提升系统可用性

一、什么是提升系统的高可用性 JAVA服务端,顾名思义就是23体验网为用户提供服务的。停工时间,就是不能向用户提供服务的时间。高可用,就是系统具有高度可用性,尽量减少停工时间。如何用最简单的方法来搭建一个高效率可用的服务端JAVA呢? 停工的原因一般有: 服务器故障。例如服务器宕机,服务器网络出现问题,机房或者机架出现问题等;访问量急剧上升,导致服务器压力过大导致访问量急剧上升的原因;时间和

springboot实战学习(1)(开发模式与环境)

目录 一、实战学习的引言 (1)前后端的大致学习模块 (2)后端 (3)前端 二、开发模式 一、实战学习的引言 (1)前后端的大致学习模块 (2)后端 Validation:做参数校验Mybatis:做数据库的操作Redis:做缓存Junit:单元测试项目部署:springboot项目部署相关的知识 (3)前端 Vite:Vue项目的脚手架Router:路由Pina:状态管理Eleme