写点什么

“世界杯直播”技术实践解析:抖音视频编码器优化

字节跳动-多媒体实验室

  • 2023-03-03
    北京
  • 本文字数:1721 字

    阅读完需:约 6 分钟

“世界杯直播”技术实践解析:抖音视频编码器优化

对于世界杯这样的大型体育赛事而言,视频编码算法既要在高速运动、复杂纹理的场景下确保直播内容的清晰度和流畅度,保障用户的观赛体验,又要兼顾码率、延迟等对网络传输层面尤为敏感的指标。


另外,抖音实现了业界首次的世界杯比赛支持 4K HDR 10-bit 直播,其内容信息量相较于以往有极大提升,对编码器的实时性提出了更高要求。火山引擎如何完成这个挑战?

BVC 编码器长期迭代优化


火山引擎自研的 BVC 编码器经过多年的技术攻关和优化技术积累,以及在不同视频服务业务方向上的长期迭代优化,目前其编码性能和编码器架构的计算效率都处于业界领先水平,在国际权威编码器大赛 MSU 比赛中多次夺冠。

世界杯项目针对性优化

概述


在 BVC 编码器的基础上,火山引擎多媒体实验室针对世界杯比赛场景进行了一系列针对性优化。


首先通过科学构建世界杯比赛视频的测试集,分析足球比赛视频特性,进一步挖掘了当前场景下的先验信息,有效提升了编码效率,在保证画质的情况下进一步降低了码率,同时优化了码率平稳性以及码控精度。


同时,团队优化了多核下的并行机制,极大幅度提升了 CPU 利用率;同时分析并优化了 4K HDR 10-bit 视频编码中的复杂度瓶颈,进一步加快了 HDR 视频的编码速度。最终使得 BVC 编码器在保证画质和降低码率的同时,能进一步提升编码速度,达到并超出了 4K HDR 10-bit 50fps 视频实时编码的要求。

另外在线上部署时,团队通过主观质量评测专门对足球赛事视频优化了各种不同质量配置下的最优码率,比如超高清 4K,超高清 HDR,蓝光 HD 等质量配置,保证不同用户的观看质量。

优化成果


本次 BVC 编码器共优化了 3 个不同档位,分别用于 4K HDR/SDR 编码,1080p 编码,以及 720p/480p 编码。


(1)针对世界杯场景, BVC 编码器优化前后各项指标对比如下图


可见优化后,BVC 编码器既有相同视频质量下带宽收益(BD-Rate),尤其是在相同 VMAF 质量指标时码率节省收益显著,同时编码速度和 CPU 利用率也提升较大(尤其是 4K 档位),码控精准度也有显著提升。



(2)针对世界杯场景的 4K 10 - bit 视频  BVC 编码器与开源 x265 编码器性能对比如下图:

可见在相同 PSNR 下,BVC 编码器的带宽节省高于 x265 的 veryslow 最慢档,且在相同测试条件下,编码速度也高于 x265 的 ultrafast 最快档。



备注:上述图示中,speed(相对于 x265 ultrafast 编码速度)越大越好,bandwidth(相对于 x265 ultrafast 带宽)越小越好。

优化手段


团队通过精准构建世界杯足球比赛测试集,有效约束了团队的优化场景,既能为团队提供更多的足球比赛视频的先验信息,同时也不会导致过拟合的情况。在此基础上,团队做了大量编码器内核优化,包括编码工具调优,新增数十项主/客观编码算法,多线程调度以及 SIMD 等工程优化加速,码率控制优化等;在优化过程中,团队使用了多个质量评价指标对优化技术性能进行评估,最终实现了在保证画质不变的条件下既有码率节省又有速度提升的优化效果。


(1)构建精准的足球比赛测试序列


团队分析了足球比赛视频中每个片段的时域复杂度和空域复杂度,同时根据每个片段的场景内容,筛选出了数十个作为足球比赛测试集。


在此基础上,团队加入了部分通用测试视频防止过拟合,构建了最终的测试集,如下图:


(2)优化编码器内核


团队首先测试了已有的数十个编码工具在当前场景的性价比,找出性价比最高的(复杂度最低,码率节省最高)工具在当前场景下开启,并关闭性价比低的工具。


在此基础上,团队针对编码器内部的多个不同模块,其中包括预分析和编码过程中运动搜索,模式决策,环路滤波等,开发了数十项新算法,进一步提高了编码效率和降低模块的计算复杂度,加快编码速度。


针对世界杯场景中视频时域复杂度高特点,团队通过优化了码率控制算法,保证了场景切换时的码率平稳性,同时提高了整体码率的精准性。团队也优化了支持 ROI 区域的码控算法,在相同码率下使得主观感受更优,有效提高了足球比赛中人眼敏感的球员区域以及草坪区域的主观质量。


团队也进行了大量并行优化,通过多线程任务调度以及 SIMD 优化,提升了多核下的 CPU 利用率,极大加快了编码速度。


优化示例


 1 )解决 480p 档位拖影问题


优化前(左) vs 优化后(右):



 2 )提升 720p/480p 草坪清晰度


优化前(左) vs 优化后(右):



2023-03-03 16:094701
用户头像
鲁冬雪 GMI Cloud Head of China Marketing

发布了 370 篇内容, 共 313.9 次阅读, 收获喜欢 304 次。

关注

评论

发布
暂无评论
发现更多内容

利用Python浅尝算法分析

迷彩

算法复杂度 7月月更 算法分析

Go 并发编程基础:什么是上下文

宇宙之一粟

并发编程 Go 语言 7月月更

Java多线程之锁优化与JUC常用类

未见花闻

7月月更

Docker 常用命令整合

宁在春

Docker 7月月更

来,滑动到下一个小姐姐

岛上码农

flutter ios 前端 安卓开发 7月月更

谈谈文字两端对齐的css问题

南极一块修炼千年的大冰块

7月月更

Python干货——内置函数

Java学术趴

7月日更

图的存储结构及方法(一)

乔乔

7月月更

互联网流量编排方案

穿过生命散发芬芳

7月月更 流量编排

Istio架构扩展机制

阿泽🧸

istio 7月月更

QDS08 curl 安装

耳东@Erdong

curl qds 7月月更

主题域模型

奔向架构师

数据仓库 7月月更

项目升级遇到的坑

技术小生

7月月更

K3S - 轻量级Kubernetes集群

mengzyou

DevOps k8s k3s

iOS中#define和const

NewBoy

ios 前端 移动端 iOS 知识体系 7月月更

JavaScript 中如何取消请求

掘金安东尼

JavaScript 前端 7月月更

百度搜索打击盗版网文站点:互联网内容侵权现象为何屡禁不止

石头IT视角

思维导图学《On Java》基础卷

Yano

Java

zookeeper-curator开源框架介绍

zarmnosaj

7月月更

Java 虚拟机的概念是怎么来的

HoneyMoose

MySQL消息队列表结构

极客土豆

springboot 项目打包优化(核心 class 与依赖 jar 分离)

安逸的咸鱼

Java maven SpringBoot 2 7月月更

python小知识-python格式化

AIWeker

Python python小知识 7月月更

OSI七层模型有哪七层?每一层分别有啥作用,这篇文章讲的明明白白!

wljslmz

OSI七层协议 网络技术 7月月更

Java基础 ——入坑必读

攻城狮杰森

Java 7月月更

教你学c++算法题中最简单的二分,我不允许还有人不会!!!!

KEY.L

7月月更

Redis 事务学习有感

恒山其若陋兮

7月月更

【刷题记录】18. 四数之和

WangNing

7月月更

【K8s入门必看】第二篇 —— 快速部署集群指南

Albert Edison

Docker Kubernetes 容器 云原生 7月月更

沉淀2年的 Jira 自动化经验分享

跟YY哥学Jira

RPA 自动化 Jira

“世界杯直播”技术实践解析:抖音视频编码器优化_AI&大模型_InfoQ精选文章