速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

好的媒体处理框架都具备这三点特征

  • 2022-04-13
  • 本文字数:4133 字

    阅读完需:约 14 分钟

好的媒体处理框架都具备这三点特征

从 2017 年开始,音视频应用平台开始逐步关注带宽成本以及观看体验,腾讯从那个时候开始研发极速高清的技术,在研发过程中他们遇到了哪些挑战?业界在高清视频方面又有哪些技术方案?本期,我们采访了腾讯专家工程师赵军,他结合自己的实践经验给出了答案。以下是采访文章整理,期待对你有所启发~

 

InfoQ:是否可以简单介绍一下您目前在做的工作?2018 年之前在 Intel 负责视频编码/解码/转码相关硬件加速的工作,与您现在目前的这个视频云的媒体处理框架最大的区别在哪里?

 

赵军:我目前主要在腾讯云视频云负责媒体处理框架、编解码场景优化等工作,为业务方提供更好的媒体处理相关基础设施;当前的工作与 Intel 的硬件加速工作相比较,其最大的不同在于,硬件加速是媒体处理框架的一个部分,而现在的媒体处理框架、编解码场景优化等工作则和真实的问题靠得更紧密一些,所以我也建议即使是在做底层相关的优化,也务必了解一下业务应用场景,这样会对你的工作,有更为全面的理解。

 

InfoQ:腾讯明眸的发展历程大概分为几个阶段?在提升画质方面,有哪些常用的方法吗?在开发过程中您面临的较大的挑战是什么?

 

赵军:腾讯明眸从 2017 年开始开发,在那个时候,我们发现音视频应用平台开始将关注点转向带宽成本、观看体验。我们也在这个时候开始研发明眸极速高清的技术,希望将长期积累下来的音视频能力运用到音视频媒体场景,特别是直播、点播等媒体处理场景上,这是明眸的极速高清的开始;期间,最重要的部分包含:

 

A:持续的编码内核的优化:我们知道,一个新编码标准的制定,它完成是 0 到 1 的突破,但作为方案或者产品,还需要解决后面的 1 到 100 的问题,而这就是一个持续编码内核优化的过程。新的标准固然先进,但没有长期的实践优化,编码器其实很难将标准的潜力全部发挥出来。在经历了多轮优化之后,内部开源协同的 O264 编码器在各项指标上相比开源编码器获得 30% 以上的增益提升,V265 相较开源的 x265 更是可以达到 40% 的编码增益;我们也在业内率先支持了 AV1,其 AV1 编码器 TXAV1(比赛时被叫做 VAV1),在 MSU 的 AV1 赛道,首次推出就实现全部指标第一的好成绩;同时,腾讯也在积极布局 H.266 等下一代编码器技术。

 

B:完善的媒体处理 Pipeline:在明眸的媒体处理的 Pipeline 中,积极引入基于传统信号处理的传统算法以及当前趋势所向的 AI 能力,先进行场景分析、毛刺检测、噪声检测、交错检测、质检以及 JND 等预分析流程,分析视频源的画面质量,然后针对不同的场景和画面质量情况,使用对应的画质增强/修复技术。修复后,明眸还会对画面进行二次分析,用来辅助后续的视频编码流程。

 

具体而言,腾讯明眸通过深度学习的方式,能够识别游戏、体育、秀场、户外、动漫、影视等在内的十几个主流大类及几十个小类的场景,为视频流自动匹配对应的场景模型。场景识别后,明眸将结合视频源码率、帧率、分辨率、纹理和运动变化幅度等信息,进一步执行锐化、去模糊、反交错、去效应、降噪、色阶补偿、降帧/插帧、暗景增强、去抖动等前置处理;然后再对画面进行二次分析,分析视频的 ROI/JND、内容自适应编码等信息,并以为依据,调整到更符合人眼主观感受的的编码流程。客户只要开启极速高清功能,就能在同画质下降低视频码率 30%-50%,保证用户观看体验的同时,大幅节约成本。

 

C:结合传输与打包格式考虑:在这个多样化的世界,不仅仅需要面对 H.264、H.265、AV1、H.266 这些不同的视频编码格式,还需要考虑不同的分发协议、容器格式、DRM 等等,这使得我们在考虑积极提升画质的同时,也需要一直探索使用更为紧凑有效、普适性佳的容器格式,结合网络传输优化,以更低的分发带宽,解决好多端、多屏的覆盖问题;带来更好的秒开,减少播放抖动,解决不同设备、生态的兼容性等问题。

 

InfoQ:业界在高清视频方面您是否清楚大家还有什么同类型的解决方案?明眸在性能上,架构设计上采用了那些有别于常规的方法?

 

赵军:业界的方案,大多受到 Netflix 的 Per-Title Encoding/Shot-based Encoding 的影响。Netflix 在 2015 年提出了 Per-Title Encoding,从较高的视角来看,Netflix 使用了一种“暴力”编码技术,将每个源文件编码为数百种分辨率和码率的组合,以找到 "凸包",即最有效地约束所有数据点的形状;以为 VMAF 为目标以衡量人眼的主观评价。

 


2018 年之后,Per-Title Encoding 编码技术演化成基于场景的动态优化器(Dynamic Optimizer)技术。动态优化不是将视频划分为任意的 2 秒或 3 秒的 GOP 或片段,而是将视频以场景划分,并对每个场景进行单独编码。虽然这种动态优化使用了动态的 GOP 和片段长度,但自适应比特率(ABR)流切换继续有效地工作,因为所有的梯级使用了相同的 GOP 和片段长度。

 

需要特别指出的是,基于 Per-Title Encoding 和 Shot-based Encoding 的技术,因为其复杂度的原因,只能在点播场景使用,而腾讯明眸则同时支持了直播场景。

 

另外,明眸也更为积极的拥抱了新技术,提供画质修复和增强的能力,有效消除片源中的噪点和压缩效应,增强细节,去除模糊,提升色彩质量,并解决由于分辨率和帧率低而导致的卡顿等问题。另外,也使用云端结合,并充分优化传输协议以及打包容器格式,使得整个方案更为完备。

 


基于 AI 的算法带来了算力上的挑战,为了解决 AI 算法所带来的算力压力,明眸设计了全新的算力池方案,使用异步方式解决性能问题。

 

InfoQ:您认为好的媒体处理框架具备那些特点和要求?腾讯云媒体处理框架距离您的目标还有多远?

 

赵军:在我看来,一个好的媒体处理框架,需要具备以下三个方面:


a). 简洁性:我们知道,把一个事情做简单比复杂更为不易,简洁性会把事情变得更为清晰且统一,这是我们在设计媒体处理框架时候的第一要务;具体说来,设计上我们使用了基于有向无环图的 Pipeline 设计,结合低耦合的分层应对不同场景的需求,另外,使用异步处理算力池,把 CPU 和 GPU 加速统一到了一体。

b). 可扩展:一个好的媒体处理框架必须可扩展,原因是 2B 业务需求多变,其实现上底层依赖多变,算力依赖多变,这需要媒体处理框架具备量好的扩展性,不断满足业务的变换。这里需要提及一下的,我们的扩展性设计,参考了 FFmpeg 的 AVCodec、AVForamt 等的扩展方式,使得底层扩展功能的时候,上层业务方在 API 的使用上并无变化上的感知。

c). 完备性:媒体的世界其实有些分裂,分裂的原因不仅仅是技术方向上的差异,也因为背后各个公司、组织甚至其他层面的因素,而作为 2B 厂商,怎么提供一个简洁易用的被集成的媒体处理方案,是一个挑战。明眸把各个底层基础原子能力分门别类,有序融入到媒体处理框架,涵盖了媒体诊断、媒体预分析、媒体前处理、编码前处理、打包优化、传输优化等,完整的覆盖了媒体处理的各个方面,使得可以应对这个多样化的媒体世界,更好地被集成到不同场景。

开源与成长


InfoQ:您什么时候接触的开源?看您之前分享过一个《FFmpeg 关键组件与硬件加速》,现在是否还在这方面下功夫?现在开源方面除了 FFmpeg,您还关注哪些方面的项目?

 

赵军:我接触开源的时间非常的早,应该已经有十多年了,基本上大部分知识,都是从开源社区或者项目中获取的,之前主要关注 Linux 内核的网络协议栈部分,后来转到媒体处理方向。目前我还保持着对 FFmpeg 项目的关注,每天都会抽时间去看社区的 Patch、讨论等。从项目定位而言,我不大知道有能和 FFmpeg 完全类似的项目,但有些我个人关注的项目可以关注下,有 Gstreamer、GPAC、SRS 等。我除了关注 FFmpeg,也关注编码项目的开源的项目和 Linux 内核,特别是 Linux 内核的网络部分。

 

InfoQ:您参与的开源项目对您个人的改变是什么?开源商业化大家目前都在做,您如何看待商业化?

 

赵军:开源项目的参加,一方面需要长期积累信任,这是一个持续投入的过程,另外一方面,深入参与开源项目也需要在沟通上面有更多的思考,大部分我参与的开源项目使用 Maillist 交流,其需要克服不同文化、语言等方面的障碍,才能更好的融入到这个项目。对于开源商业化,我思考得不多,当前还处于一个朴素的开源理念状态,“既取之,必予之”——既然从开源社区获取到知识,也应该积极地回馈开源社区这样一个朴素的道理。

 

InfoQ:如果有新的开发者想要接触开源,您有什么建议?


赵军:对于新的开发者,个人经验是先把能找到的相关资料,如邮件礼仪、编码风格、代码提交流程、代码 Review 流程、Github 与 Maillist 等先熟悉起来;大部分的开源项目,都有一些比较小的 task,可以从这些 task 出发,尝试进入这个项目;需要提及一下是,要严格遵守开源社区礼仪,因为开发习惯和个人工程素养的原因,很多国内的新开发者在尝试融入开源社区的时候,容易忽视这个问题导致受挫。

 

InfoQ:在新技术快速迭代的环境下,如何不断学习新技术,是否有一些学习习惯可以借鉴给读者?似乎程序员 35 岁都有焦虑,您如何看待这个问题?


赵军:对于学习的问题,我觉得要回归最简单的一个需求,就是人的好奇心,碰到一个问题或者新技术,你是否有足够的好奇心,找到问题背后的挑战,然后尝试找出令自己满意的答案;而学习新技术的开始,我习惯从类比已有知识开始,尝试按照自己的方式去理解;在初期阶段,找到所有相关知识的材料,不做区分的通读,这个过程可以快速了解这个技术或者行业的一些行话(jargon),了解所面临的基本问题;第二遍开始精读经典或者重要文献、代码等,以获取更多的细节,毕竟,The devil is in details 。


关于 35 岁的焦虑问题,腾讯内部有个论坛叫 KM,里面有同事回答过类似的问题,说的是“读书破万卷”,虽然有些戏谑,不过其实有一定的道理,一方面,要保持持续的学习,目前社会已经发生一些变化,需要保持终身学习的习惯,我所见的大部分优秀的同事、朋友都具备这个特点;另外,要考虑自身的核心竞争力,在两到三个领域有自己的竞争优势;多与外部优秀的同事、朋友交流。第三个则是我做得比较差,目前在尝试改进的地方,锻炼身体,保持旺盛的精力,不做太多无谓的身体的消耗。


活动推荐:

在 6 月 19-20 日,ArchSummit 全球架构师峰会即将落地上海,赵军老师也会到现场分享,在赵军的分享中,你可以了解到腾讯明眸媒体处理架构,详细专题内容可通过下方 Banner 扫码了解,期待和你一起现场交流。



2022-04-13 16:595079

评论

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

什么是 Jenkins? 运用Jenkins持续集成

码语者

DevOps jenkins

Linux C/C++ 服务器/后端开发/后台开发学习路线

Linux服务器开发

C/C++ Linux服务器开发 Linux后台开发 Linux后端开发

学习笔记

山@支

​专科出身,2年进入苏宁,5年跳槽阿里,论我是怎么快速晋升的?

码农之家

Java 程序员 互联网 面试 阿里

MySQL-技术专题-锁的介绍分析

洛神灬殇

MySQL lock 锁机制

Airtest入门及多设备管理总结

行者AI

自动化测试

MySQL查询优化必备

咔咔

MySQL 查询优化

MVCC:听说有人好奇我的底层实现

咔咔

MySQL MVCC

跨专业?拿到阿里offer?我是如何一步一步做到的?

Java架构师迁哥

低代码平台想要实现复杂的业务流程,这4个条件不能少!

优秀

低代码

解Bug之路-主从切换”未成功”?

无毁的湖光

数据库 主从环境

webrtc stream,source,track

webrtc developer

上来就问MySQL事务,瑟瑟发抖...

咔咔

MySQL 事务

AI开发降本提效之道:云智一体AI开发全栈模式

百度大脑

百度 AI 飞桨

百度交易中台之订单系统架构浅析

百度Geek说

云计算 架构 云原生 后端 云服务

飞桨与宸曜科技完成兼容性认证

百度大脑

认证 飞桨

揭开MySQL索引神秘面纱

咔咔

MySQL 索引

你对JVM垃圾收集器了解多少?面试官夺命13问谁碰谁不迷糊啊!

北游学Java

Java JVM 垃圾回收

在华为云专属月中,寻觅互联网更需要的云味道

脑极体

聪明人的训练(八)

Changing Lin

4月日更

Python OpenCV 泛洪填充,取经之旅第 21 天

梦想橡皮擦

Python OpenCV 4月日更

从零开始写游戏服务器①:前期了解

Integer

c

Canalys发布2020 Q4中国云市场报告

百度大脑

百度 AI

Apache-Flume的安装及简单应用

慢慢de

win10 flume 日志采集

c 语言思维地基搭建(vis2013编译+第一个c语言程序)

-jf.

4月日更

webrtc 开启新特性

webrtc developer

面试阿里P6,却被MySQL难倒,二战阿里,挤进天猫团队(Java岗)

Java 程序员 架构 面试

第14期师资培训火热招生中尽享国赛智能车一手资料

百度大脑

人工智能

一位阿里P8技术大牛的Java面试题总结,在GitHub上仅一天就获赞上万!

Java架构之路

Java 程序员 架构 面试 编程语言

百度联合研究成果登上《自然》子刊 推动人才管理大数据智能化转型

百度大脑

百度 AI

如何保护您的SaaS应用程序?

龙归科技

网络安全 SaaS 远程工作 单点登录

好的媒体处理框架都具备这三点特征_ArchSummit_赵军_InfoQ精选文章