抖音大型直播的画质优化实践

news2024/12/26 11:39:10

面临挑战

随着抖音内容生态的不断丰富,越来越多的大型赛事在抖音平台进行直播,世界杯/春晚/亚运会等各项赛事节目引来大量用户观看。卡塔尔世界杯期间,抖音提供的稳定高质直播画面为观众带来了完美的观赛体验,决赛的 PCU 高达 3700W+。不同赛事节目涉及链路众多,且不同赛事之间存在差异,如何保障各链路的画质稳定并进一步提升画质,是一个巨大的挑战。

如何应对挑战?

画质优化链路

大型赛事直播涉及链路较长,不同赛事链路存在一些差异,整体可简化为下图流程,现场信号经过演播室的制作传输给 CDN 再进一步分发到用户侧。从画质角度来看整个链路可分为画质检测与画质优化两个部分,对于 CDN 之前的链路以画质监测为主,以发现问题/定位问题/推动对应链路人员解决问题为目的。画质优化在 CDN 和客户端两侧进行,下面的内容主要介绍画质优化部分。

ac2703d341f0d10a18f86f1ad5f92833.png

随着赛事录制技术的提升,越来越多的大型赛事都用上了4K HDR录制标准,画质清晰度也不断提升,随之而来的是更大的带宽压力。同时为了兼容消费端不同的看播设备和不同的带宽条件,服务端需要转出多种不同分辨率不同码率的版本供看播端选择,为了保障用户在不同带宽与设备下都能取得最佳的画质体验,我们做了大量的优化工作。团队通过自研的自适应 ToneMapping,视频降噪,ROI编码,视频插帧,BAS采样,端上超分等算法有效地提升了赛事画质。

自适应ToneMapping: 目前大型赛事大都使用HDR(高动态范围)设备录制,团队对支持 HDR 看播的设备增加了 HDR 档位,同时提供了多种不同分辨率/帧率的档位。HDR 拍摄的片源拥有更广的色域,更大的动态范围。但对很多终端显示设备而言,并不支持 HDR 信号播放,所以通过 ToneMapping 算法将 HDR 信号转换为 SDR(标准动态范围)信号是十分必要的。

cd9c238f45d83813e0b41ebf9cf39312.png

相比 SDR 信号,HDR 信号拥有更广的色域和更大的动态范围,在转换到 SDR 信号的过程中不可避免会产生一些信息损失。常用的一些 ToneMapping 方法,不论是 Reinhard,Filmic 或者 Hable,其本质都是设计固定的映射曲线实现从 HDR信号 到 SDR信号的转换,同时尽量保持对 HDR 效果的还原。但直播赛事场景多变,且现场动态范围跨度极大,如世界杯比赛中场馆的灯光/草地/球员亮度差异明显,不同镜头跨度极大,而在亚运会游戏类比赛中的CG画面较为稳定,现有的ToneMaping算法无法在多变的场景中取得优秀稳定的效果,而手动调节每场比赛的转换参数也不现实。为了解决这一问题,团队提出了内容自适应 ToneMapping 算法,通过统计视频内容的实际光照情况动态地进行 ToneMapping,从而得到更优效果。

左: 内容自适应 ToneMapping,右: Hable 算法

66ea1fa307b302f1a34b79d2f0e3ccfd.png 96f32696110b32e2a57353ed0afb3f9d.png

在主观众测中优化之后的内容自适应 ToneMapping 算法遥遥领先于现有的TonaMpaping算法结果(对照任务为团队自研结果)

c3e97eb66e04db405737d6c4df1a46d6.png

BAS 采样: BAS(Byte AI Scaling)算法是字节自研的一种基于深度学习的图片/视频下采样算法,近些年来,深度学习驱动的视频处理算法已经广泛应用于各类点播、直播服务中,涵盖抖音、西瓜视频等诸多业务线。在实际的流媒体传输链路中,依据用户实际网络延迟、终端性能等因素,源流将通过自适应码率(Adaptive Bit-Rate)策略传输到终端设备,优化用户实际体验。其中,视频流往往会被采样到多个标准分辨率,例如蓝光(1080p)、高清(720p)、标清(480p)等。随着音视频行业和摄影设备的发展,高分辨率的视频源占比日益增多,大部分视频需要在服务端进行降采样来配合自适应码率策略,因此降采样算法的优化也是提升QoE的关键。在过去的业界实践中,视频处理算法往往专注于提高分辨率(如超分算法)或者保持分辨率(如降噪算法)的处理范式,而几乎忽视了对降低分辨率方法的研究。不同于固定算子的bicubic等降采样算法,BAS算法基于深度学习使用高精度数据训练模型,缓解传统方法带来的频域混叠与频域截断问题,降低锯齿感、减少细节丢失。如下图所示,对于4K的超高清图源降采样到480p分辨率的任务,左图为BAS算法处理结果,右图为传统bicubic算法处理结果。可以明显看到,BAS算法处理结果中缓解了边缘锯齿(左下),消除了摩尔纹(右下),并且灯牌、观众席等方面的细节纹理更加清晰,视觉观感更好。

左图为BAS采样结果,右图为Bicubic采样结果

48be67076a2122369ead85a80a9cdcd6.png

在与bicubic算法的定量对比中,BAS基于PSNR指标取得了-20.32%的BD-Rate收益,意味着相同重建误差水平下可以节省20%以上码率,而同等码率下则可以提升画质水平。而对于更符合人眼感知特性的VMAF指标,BAS同样取得了-20.89%的BD-Rate收益。

fecf6b47a4401478dd6e0ffe571f4ec3.png

在常用的编码条件下,BAS算法在UGC视频上能做到在降低6.12%平均码率的同时,提升多项关键主客观画质指标,既可以降低一部分传输带宽,也可以带来画质上的提升,取得成本和体验上的双赢。

51db69ca13806d229abc620f8f421132.png

视频插帧: 抖音大型赛事实践中会遇到各种不同的录制标准,其中也存在1080P 25fps的录制标准,现在消费者已经习惯高帧率的流畅视频体验,对于低帧率的视频会明显感受到画面的流畅度降低,影响用户观看体验。针对低帧率场景,我们使用了智能插帧技术,通过对前后帧的内容进行光流估计,根据光流信息将前后帧像素都转换到中间帧,然后进行整合,生成中间帧,提升视频帧率,减少观看时的卡顿感。而针对电竞类对帧率要求较高的场景,我们做了以下的额外优化。

c526af172db6a3ba1adcd5148ad7e5d3.png

faster光流模块和faster修正模块使用partial conv代替普通卷积,能在保持效果的同时减少卷积运算;在计算光流时,采用内容自适应下采样去对输入进行下采样,用于计算光流、残差和遮挡掩码, 再将其上采回原分辨率,用于原始输入的warp和整合 ,由于光流模块和修正模块这两个运算较多的模块接收的是较小的分辨率,从而达到进一步减少计算量的效果;工程上,团队通过算子融合、半精度的方式,减少IO和浮点运算,相比工程化前加速1倍多。同时,通过多GPU部署的方式拓展了智能插帧的能力,使得在更高分辨率(4k)的场景下能实施部署。另一方面,电竞场景中,比如王者荣耀,每个英雄上面都会有选手的名字,而这些文字较小,文字会随着英雄的复杂运动而运动,也就是会导致出现小文字的复杂运动,智能插帧通常会在这些复杂运动的小文字上因为光流估计不够准确而导致插出来的帧文字的位置不够准确,导致伪像出现,我们在训练过程中加入更多的随意移动或者静止的较小文字,使得模型能够在训练过程中更多地注意处理小文字的复杂运动,从而达到更好的插帧效果,如下图所示,左边为优化后的插帧结果。

左边为优化后结果,右边为优化前结果

6721088f36d6af6e07df8f2ce11d7809.png

ROI 编码: 为了兼顾视频码率和主观画质,团队使用了基于 LSTM(长短期记忆网络)的时域 ROI 技术,通过人眼显著性区域检测和编码相结合的方式,让码率在画面上的分配更加合理。除了模型设计之外,ROI算法中另一大难点是saliency(显著性物体检测)数据的获取,通用的saliency数据集在大型赛事中的表现并不理想。针对这一问题,团队收集制作了自己的专用数据集,并且对一些大型赛事做了专用数据集,例如针对世界杯赛事,团队专门制作了足球场景的 saliency 数据集,通过眼动仪追踪球迷观看球赛时的关注区域得到足球比赛的专用 saliency 数据集,从而极大增加了模型的准确性。针对足球场景中显著性物体较多,显著性区域分散的特点,团队对检测模型进行了专门的优化,在保证检测速度的前提下,提高了模型的召回率和不同场景的鲁棒性,从而实现更优的主观质量。

注:红色框内表示 ROI 区域,左边为通用方案结果,右边为优化结果

5d335881db7db4d99aa0e5d828bf4de4.png ef8f28dad645bd8c76a40eea1bb71183.png

同时团队使用视频降噪算法,根据视频信息对其进行空域、时域噪声的去除,将带有噪声的视频处理成干净、没有噪声的视频。由于去除了视频的噪声,在提升视频质量的基础上同时降低了传输的码率。由于用户侧网速的限制,端上存在多个档位,当看播端网速较慢时,可能会切换到 480P/720P 等低分辨档位,此时会触发端上超分算法提升画面清晰度。超分辨率技术指的是,基于机器学习/深度学习方法,根据视频信息对其进行空域、时域建模重构出缺失的细节,将低分辨率的视频重建出高分辨率视频的技术。这样即使是在低分辨档位也能体验到更清晰的画质。

左:视频降噪前,右:视频降噪后

cafa26630eea4f92d8b1a39d2466e106.png

除此之外团队还提供大分辨率、高帧率、广色域,并使用色彩增强、自适应锐化等多种画质增强技术,呈现更加沉浸感的超高清画面。

左:未过端上超分,右:经过端上超分

bb068718232cc593222b65542a296bf4.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1180019.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电子牵:利用无代码开发优化电商平台、客服系统与CRM的连接

电子牵的无代码开发优势 在当前的电商环境中,优化运营并提高效率的需求日益增强。电子牵,这个专业的电子签名平台,提供了一种高效的解决方案。电子牵可以帮助用户迅速并有效地完成合同签署,进一步提升产品或平台的签署效率。更为…

【Hadoop】YARN容量调度器详解

🦄 个人主页——🎐开着拖拉机回家_Linux,Java基础学习,大数据运维-CSDN博客 🎐✨🍁 🪁🍁🪁🍁🪁🍁🪁🍁 🪁🍁&am…

03-react基础知识-HOOK

一、useState 二、 useEffect 三、 useCallback 四、 useMemo 五、 useContext 含义:useContex用于在组件中获取上层组件通过 Context 提供的数据。它可以让你跨越组件树层级来访问共享的数据,避免了通过层层传递 props 的带来的问题。 1.实现数据的跨…

【Redis】Redis与SSM整合Redis注解式缓存Redis解决缓存问题

一&#xff0c;Redis与ssm整合 1.1 pom.xml配置 在pom.xml中配置相关的redis文件 redis文件&#xff1a; <redis.version>2.9.0</redis.version> <redis.spring.version>1.7.1.RELEASE</redis.spring.version><dependency><groupId>red…

【排版教程】使用Latex ACM 双栏会议模板如何添加跨栏的图片

0 前言 模板中默认的图片插入的写法是下图这样的单栏图片&#xff0c;但是一般我们自己绘制的系统整体结构框图都是比较长的&#xff08;横向长度&#xff09; 我们想插入一个类似于这样的长图片 但是模板中给的这个例子&#xff0c;是插入的一个pdf文件。在实际使用中&…

2023年【金属非金属矿山(地下矿山)安全管理人员】实操考试视频及金属非金属矿山(地下矿山)安全管理人员操作证考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 金属非金属矿山&#xff08;地下矿山&#xff09;安全管理人员实操考试视频考前必练&#xff01;安全生产模拟考试一点通每个月更新金属非金属矿山&#xff08;地下矿山&#xff09;安全管理人员操作证考试题目及答案…

传输线在阻抗匹配时串联端接电阻为什么要靠近发送端

在进行阻抗匹配的时候我们可以在电阻源端放置一个串联端接电阻&#xff0c;但是有时候受到空间的限制可能会把电阻摆的稍微远一点&#xff0c;那么这个时候大家可能会有疑问&#xff0c;电阻离发送端远一点或者电阻放置在接收端&#xff0c;那么电阻还能消除传输线的反射吗&…

uniApp封装请求

一、request封装 创建一个api文件夹&#xff0c;用于存放所有的API接口文件。在api文件夹中创建一个request.js文件&#xff0c;用于配置接口的路由信息、请求地址和请求方法等信息。示例代码如下&#xff1a; const BASE_URL http://example.com/api // 替换为你的接口基础U…

小白学爬虫:通过关键词搜索1688商品列表数据接口|1688商品列表数据接口|1688商品列表数据采集|1688API接口

通过关键词搜索1688商品列表数据接口可以使用1688开放平台提供的API接口实现。以下是使用关键词搜索商品列表数据的基本步骤&#xff1a; 1、注册并获取AppKey。 2、构造请求参数&#xff0c;包括搜索关键词、页码、每页条数等。 3、通过API接口链接&#xff0c;将请求参数发送…

第四章《全景图:机器学习路线图》笔记

4.1 通俗讲解机器学习是什么 4.1.1 究竟什么是机器学习 卡内基梅隆大学机器学习领域的著名学者汤姆米切尔曾经在 1997 年对机器学习做出过更为严谨和经典的定义: A program can be said to learn from experience E with respect to some class of tasks T and performance …

发票识别神器:自动化读取纸质发票信息,提高工作效率

当今数字化时代&#xff0c;纸质发票的处理和管理成为许多企业和个人面临的挑战。手动处理大量纸质发票不仅费时费力&#xff0c;还容易导致错误和遗漏。因此&#xff0c;自动识别纸质发票上的信息的软件成为一个备受关注的话题。 幸运的是&#xff0c;现在有一款先进的软件能…

[C/C++]数据结构 链表OJ题 : 链表中倒数第k个结点

描述 输入一个链表&#xff0c;输出该链表中倒数第k个结点。 方法一: 暴力求解 先遍历一遍整个链表获取链表长度len,则倒数第k个结点就是整数第len-k个结点 struct ListNode* FindKthToTail(struct ListNode* pListHead, int k ) {struct ListNode* cur pListHead;int len …

RK3568驱动指南|第七篇 设备树-第61章 实例分析:pinctrl

瑞芯微RK3568芯片是一款定位中高端的通用型SOC&#xff0c;采用22nm制程工艺&#xff0c;搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码&#xff0c;支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU&#xff0c;可用于轻量级人工…

宝马——使用人工智能制造和驾驶汽车

德国汽车制造商宝马(BMW)每年在全球制造和销售250万台汽车&#xff0c;其品牌包括宝马、MINI和劳斯莱斯。 宝马汽车以其卓越的性能和对新技术的应用而著名&#xff0c;它是道路上最精致的汽车之一&#xff0c;并且和其竞争对手戴姆勒(Daimler)一样&#xff0c;在将自动驾驶汽车…

最新、最全、最详细的 K8S 学习笔记总结

Kubernetes就是一个编排容器的工具&#xff0c;一个可以管理应用全生命周期的工具&#xff0c;从创建应用&#xff0c;应用的部署&#xff0c;应用提供服务&#xff0c;扩容缩容应用&#xff0c;应用更新&#xff0c;都非常的方便&#xff0c;而且可以做到故障自愈。 K8S的前景…

APP 备案公钥、签名 MD5、SHA-1、SHA-256获取方法

​ 公钥和 MD5 值可以通过苹果开发工具、Keytool、appuploder 等多种工具获取&#xff0c;最简单的就是以 appuploader为例。 1.下载 appuploader工具 &#xff0c;点击此处 下载 appuploader 工具。 ​2.下载完成后&#xff0c;解压压缩包&#xff0c;双击 appuploder 运行。…

CRM软件对B2B销售的作用有哪些?

​ CRM软件对B2B销售有用吗&#xff1f;面向B端企业的B2B销售模式&#xff0c;是一个比B2C模式错综复杂的业务形态。最初CRM软件就是为这种业a务模式设计的&#xff0c;十几年来碰撞出来的火花不一而足。 B2B&#xff08;也叫BtoB&#xff09;销售的特点几乎等同于难点&#x…

SS928开发板 开发记录三: nfs 挂载

1.创建nfs文件 1.安装nfs sudo apt-get install nfs-kernel-server 2.创建文件 sudo mkdir /home/nfsroot 3.给权限 sudo chmod 777 nfsroot 4.设置 vim /etc/exports 最后一行加入 /nfsroot *(rw,sync,no_root_squash)5. 重启nfs sudo service nfs-kernel-server r…

小白学爬虫:手机app分享商品短连接获取淘宝商品链接接口|淘宝淘口令接口|淘宝真实商品链接接口|淘宝商品详情接口

通过手机APP分享的商品短链接&#xff0c;我们可以调用相应的接口来获取淘口令真实URL&#xff0c;进而获取到PC端的商品链接及商品ID。具体步骤如下&#xff1a; 1、通过手机APP分享至PC端的短链接&#xff0c;调用“item_password”接口。 2、该接口将返回淘口令真实URL。 3…

macOS电池续航工具:Endurance中文

Endurance for Mac是一款强大而实用的电池管理和优化软件&#xff0c;专为MacBook设计。通过智能调整系统设置和管理后台应用&#xff0c;它能有效延长电池续航时间&#xff0c;提升工作和娱乐效率&#xff0c;成为你在各种场合下的得力助手。 Endurance for Mac软件的功能特色…