阿里视频云技术专家孙小军:短视频SDK非编架构与渲染引擎技术实现

简介: 在6月8日上海云栖视频专场中,阿里视频云技术专家孙小军进行了一场短视频技术分享,解读了短视频非编架构和渲染技术架构的实现原理。阿里云短视频SDK服务了1000多家企业用户,遇到了不同垂直行业、不同业务场景的客户。

在6月8日上海云栖视频专场中,阿里视频云技术专家孙小军进行了一场短视频技术分享,解读了短视频非编架构和渲染技术架构的实现原理。阿里云短视频SDK服务了1000多家企业用户,遇到了不同垂直行业、不同业务场景的客户。除了面临多样性需求的技术挑战外,还面临着扩展性、性能及兼容性上的考量。
IMG_3274

那么,在基础架构研发层面是如何解决这些问题呢?

image

阿里云的短视频SDK从非线性编辑入手,主要目标是对音视频素材做任意部分的随机存取、修改和处理。其次,阿里云短视频SDK对渲染效果进行管道化处理,提供渲染底座,方便对接不同的视频算法及组合复杂的渲染流程。

在传统的非编场景中,当我们有编辑需求时,是这么操作的。左上角有素材裁剪,导入或采集的视频,要做裁剪、倒放、拉伸等等处理,下一步是添加一些滤镜效果,如果有多段视频,可以选择不同方式的转场。下面在整个视频时间轴上存在不同轨道,每个轨道上可以在不同的时间段放不同的素材,每个素材可以拉伸时长、变速等。

image

一、短视频的非编架构是怎样的?

通过提炼,我们抽取了五层架构。最上面一层是产品级的DEMO,方便用户快速修改发布上线;第二层是成熟的、开源的UI控件,像时间轴空间、文字动图编辑控件等,用户可以直接使用也可以定制化;第三层是针对短视频场景进行一些编排,包括录制场景、视频导入裁剪、多段拼接、编辑场景等;第四层是多媒体领域通用性的组件,包括渲染、音频处理、编解码等;最下层是多媒体分发框架,是对包括线程模型、时钟机制、监控、状态管理等跨平台的基础能力的抽象。下面我们从几个重点层级详细展开。

image

多媒体分发框架

无论是音视频编解码、渲染等基础组件,还是编辑、导入拼接等业务场景的编排组件,都是基于多媒体分发框架上实现的。多媒体分发框架包括线程模型、模块间消息订阅互发等基础服务的封装,通过Clock机制让多个组件之间组合出多样性的时钟同步方案,并通过这些组件之间的统一状态迁移和数据链路的状态监控,可以方便业务编排层快速构建具体的业务场景。

多媒体通用组件

非编场景下的典型的时间轴和多轨道的技术,短视频SDK是如何实现的呢?抽取了音视频缓冲池处理,将素材做映射拉伸,比如对每一个素材做快放、倒放的效果,生成某一个轨道上的视频片段,每个轨道上可以添加多个音频、视频、图片等素材。通过素材的绝对时戳、相对时戳以及与全局时戳的映射关系,就可以灵活组装出各种非编效果。

image

短视频场景编排层

在这一层上会实现短视频场景下的各类编排方式。以编辑场景为例:预览和合成效果上是有重叠的,在这一层中可以按下图方式编排流程。
1、创建缓冲池、渲染、编排、封装等组件,注册到消息分发框架;
2、创建Clock注入组件,订阅主从时钟关系;
3、组装数据流订阅关系,渲染订阅缓冲池流、编排订阅渲染流、Muxer订阅编码等;
4、针对业务场景编排渲染节点;
5、编排层组件统一管理各组件状态迁移Init->Prepared->Playing;
6、编排层可以Buffer监控、调整、上报;

image

二、复杂的渲染效果是如何实现的?

image

上图是短视频录制渲染与编辑渲染的pipeline,可以看出录制场景和编辑场景下渲染流程存在较大差异。在业务丰富度高的toB业务场景中,需要有灵活的渲染节点编排的能力和对接第三方渲染的能力,同时对于终端平台还存在多平台适配问题,需要统一接口并针对平台特性进行优化,来保证性能。

针对以上的问题,在渲染引擎上阿里云短视频SDK抽离出四层概念。第一层是GPU抽象层,这一层是为了解决OpenGL、Mental等渲染适配的问题;第二层是解析和运行层,针对不同的pipeline节点编排,解析并生成链路,并按照驱动模式去运行;第三层是渲染服务层,可以实现状态迁移和模块间信令交互等;第四层是渲染业务编排层,根据不同业务场景来排版渲染的pipeline。

非编能力与渲染引擎能为用户带来什么价值?

第一, 当用户提出新的个性化需求的时候,如多滤镜分屏显示,只需要编排能力就可以组装出用户需要的效果。后续将会开放渲染节点编排,用户可以自行编排渲染节点,实现更符合自己业务特色的渲染效果。

第二, 集成了短视频SDK后,后续将会开放定制动图、滤镜和MV素材。

第三, 针对某个素材,实现各种类型的时间特效,非线性叠加变换。

第四, 可扩展丰富的转场效果,包括多边形、淡入淡出、百叶窗等。

第五, 对非编全链路pipeline做了大量的性能优化,渲染引擎做了CPU到GPU性能优化,集成短视频SDK后,用户可以获得更好的性能体验。

image

作为基础架构研发,孙小军所在的团队也遇到了一些坑点。如果要实现跨多段,全局时间重叠,并且要实现反复时间特效的时候,业内的玩法是预处理合成一个视频,然后再针对这段视频进行反复处理。但是我们也会遇到一些客户的反馈,在这个过程中预处理时,用户的等待时间很长,失去了灵活性。那阿里云短视频SDK做的改变是,在这条线上通过非编,将反复的时间段转换成多个part段,通过part的反复来达到整体非编的效果。

短视频V3.6版本上线

短视频SDK近期刚刚发布的V3.6版本就采用了非编架构和渲染引擎,在功能层面,除了原本的短视频基础能力之外,新增了特效滤镜、时间特效等功能,可以快速实现类似“抖音”等当红短视频APP上的酷炫效果。

image

对业务感兴趣的朋友,可以扫码下载DEMO,或者加入钉钉合作群与专家直接交流。

image

目录
相关文章
|
2月前
|
存储 前端开发 架构师
阿里资深架构师带你深入浅出JVM!
JVM = 类加载器(classloader) + 执行引擎(execution engine) + 运行时数据区域(runtime data area)
43 1
|
3月前
|
安全 Java 应用服务中间件
阿里技术官架构使用总结:Spring+MyBatis源码+Tomcat架构解析等
分享Java技术文以及学习经验也有一段时间了,实际上作为程序员,我们都清楚学习的重要性,毕竟时代在发展,互联网之下,稍有一些落后可能就会被淘汰掉,因此我们需要不断去审视自己,通过学习来让自己得到相应的提升。
|
2月前
|
架构师 Java API
阿里P7架构师带你深入剖析synchronized的实现原理
显示锁ReentrantLock的内部同步依赖于AQS(AbstractQueuedSynchronizer),因此,分析ReentrantLock必然涉及AQS。
19 1
|
2月前
|
XML Java 数据库连接
阿里P7架构师带你修炼MyBatis
我们通过一个简单的权限控制需求(RABC,Role-Based Access Control,基于角色的访问控制),来讲解通过XML方式配置MyBatis的基本用法(即select、update、insert、delete等操作的XML配置方式)。
35 0
|
2月前
|
存储 监控 安全
阿里云云通信短信服务安全之安全架构
阿里云云通信长期致力于通过多种渠道向客户透明服务相关情况。客户一般可通过阿里云官网提出对阿里云云通信相关资质、服务使用情况、产品说明等信息,我们将7*24小时不间断处理您的建议与咨询。对于客户合理的要求,阿里云云通信服务团队均会及时响应客户的需求。同时,阿里云云通信也在探索更多增加透明度的方式,如对公邮箱、线上查询接口、钉钉服务客户群等。
|
3月前
|
消息中间件 人工智能 Java
面试了一个前阿里P7,Java八股文与架构核心知识简直背得炉火纯青
前几天,跟个老朋友吃饭,他最近想跳槽去大厂,觉得压力很大,问我能不能分享些所谓的经验套路。 每次有这类请求,都觉得有些有趣,不知道你发现没有大家身边真的有很多人不知道怎么面试,也不知道怎么准备面试,哪怕是一些工龄比较长的“老开发”: 有的人明知道有些问题肯定会被问,面试前还不好好准备,结果要么回答得模棱两可,要么答非所问; 有的人则是不知道怎么包装自己的项目经历,结果明明还不错的项目却看上去平平无奇,过后就被面试官忘了; 更有甚者,简历写得花里胡哨,结果一问三不知,简历和经历完全对不上。
|
3月前
|
机器学习/深度学习 架构师 Java
面试阿里P6,过关斩将直通2面,结果3面找了个架构师来吊打我?
人人都有大厂梦,对于程序员来说,BAT为首的一线互联网公司肯定是自己的心仪对象,毕竟能到这些大厂工作,不仅薪资高待遇好,而且能力技术都能够得到提升,最关键的是还能够给自己镀上一层金,让人瞻仰。
|
3月前
|
消息中间件 存储 架构师
鼓掌!阿里技术官亲荐“架构修炼宝典”,从基础到源码,一站到底
作为一名程序员,尽早确定自己的发展方向和路线是非常重要的,架构师则是其中的方向之一。很多程序员,奋斗大半辈子,是为了让自己成为一名合格且优秀的架构师,但是成为架构师并非一件易事,它对于技术方面的要求也是非常高的。
|
3月前
|
NoSQL Java 程序员
阿里开发人员献礼“Java架构成长笔记”,深入内核,拒绝蒙圈
提起阿里,行外人联想到的关键词无非是“交易”、“淘宝”、“支付宝”,但对于程序员来说,阿里庞大的技术体系才是最吸引人的。实际上阿里作为国内一线互联网公司的头把交椅,内部的技术体系和发展都是备受关注的,对于程序员来说,能够进到阿里工作,就是对自己的技术水平进行一个提升和学习。
阿里开发人员献礼“Java架构成长笔记”,深入内核,拒绝蒙圈
|
4月前
|
Dubbo 应用服务中间件 Docker
阿里P8架构师谈微服务架构:Dubbo+Docker+SpringBoot+Cloud
什么是微服务架构呢?简单说就是将一个完整的应用(单体应用) 按照一定的拆分规则(后文讲述)拆分成多个不同的服务,每个服务都能独立地进行开发、部署、扩展。服务于服务之间通过注入RESTful api或其他方式调用。