深度解读MediaBox SDKs如何实现技术架构升级

简介: 技术架构篇:MediaBox SDK
本专栏将分享阿里云视频云MediaBox系列技术文章,深度剖析音视频开发利器的技术架构、技术性能、开发能效和最佳实践,一起开启音视频的开发之旅。本文为MediaBox技术架构篇,重点从音视频终端SDK的技术架构、优化设计、架构优势等方面,介绍MediaBox SDKs如何实现技术架构升级。

善师|作者


流媒体时代,越来越多的企业,投入到短视频、直播、音视频通话等相关的业务研发中来,特别是手机移动端,作为用户流量的主要入口,成为愈发激烈的流媒体竞争战场。


在此浪潮下,众多App厂商纷纷涌入音视频赛道,并且往往接入不止一个音视频业务,可能涉及直播、播放器、音视频通话等多项音视频服务。


过去,厂商在接入多个音视频业务时,通常需要接入多个音视频SDK,带来的结果是包体积极速增大,同时接入效率低下,无法做到快速上线,从而导致在竞争中错失先机。


MediaBox音视频终端SDK正是为了解决企业这一痛点而生的。


01 概念说明


MediaBox音视频终端SDK(MediaBox SDKs),以统一的技术底座,形成一系列不同能力的SDK,为客户提供灵活、易用、高效的接入体验。音视频终端SDK,与音视频低代码开发AUI Kits,以及基于行业生态合作构建的音视频场景方案,共同组成了MediaBox音视频终端一体化套件大图。



从业务维度划分,MediaBox SDKs是阿里云视频云基础终端能力的集合,包含了播放器、直播、超低延迟直播、实时音视频通信、短视频创作等音视频服务能力。


从技术能力划分,音视频终端SDK提供音视频采集、前处理、音视频编码、封装/解封装、媒体网络传输、音视频解码、后处理、音视频渲染等各项技术能力。



02 技术架构


为了构建一个高性能、高可用、高灵活性、可插拔、易扩展性的SDK,我们将SDK的媒体引擎分为微内核、媒体组件和端基础能力组件三个部分。


微内核:作为业务SDK的核心和控制中枢,负责串联和管理各个媒体组件,形成业务的pipeline,主要由消息中心、调度中心、链接管理、队列管理、组件管理、插件管理和监控中心几个部分组成。


媒体组件:音视频媒体处理的基本能力单元,由音视频采集、前后处理、音视频编解码、文件封装解封装,媒体网络输出以及媒体渲染等部分组成。


端基础能力:端侧高可用配套基础能力,提供License、配置下发、异常管理、埋点等多种端侧能力。



03 优化设计


通常,音视频端侧SDK没有统一的内核、组件,每个SDK都是独立的业务开发,不存在功能复用,这就无法对组件进行统一迭代优化,而是需要对不同SDK分别进行性能、功能优化,或者进行兼容性适配,从而导致无法快速应用到业务上。


对此,阿里云视频云MediaBox对终端SDK的内核、组件进行优化设计,实现高性能、高稳定、高可用的架构升级:


• 微内核设计,将所有业务基于统一的微内核进行重构;

综合所有SDK的组件,统一抽离、沉淀媒体组件,保证所有组件能力一致、行为一致、性能稳定;

统一所有端侧基础能力,对SDK业务统一授权,增加端侧排障和异常预警能力,保证高可用。


1、微内核设计


在综合考虑各个SDK原本的引擎层设计之后,我们基于原有的业务模式,设计了一套可用于所有音视频SDK的微内核。


为了实现高性能和高稳定性,确保内核简单好用,且不对业务造成损伤,我们采用的微内核设计由以下几部分组成:


消息中心:负责各个业务组件间的消息分发;

调度中心:负责各个业务组件运行任务的线程调度;

链接管理:负责管理媒体引擎各个业务组件间的链接关系;

队列管理:消息队列管理,配合调度中心,管理当前的任务队列;

• 组件管理:负责管理业务的所有组件,负责注册、反注册组件;

• 监控管理:对组件的数据处理进行监控,及时发现消息处理或者数据处理的异常;

• 插件管理:预埋了插件化设计,方便定制插件,扩展能力。


2、组件抽离和复用


我们对视频云终端SDK用到的媒体组件进行组件化管理,统一抽离、复用以及统一优化迭代。各个音视频SDK中的组件分布情况如图所示:



以直播场景和短视频拍摄场景下的业务Pipeline为例,展示各组件的串联效果:


直播场景下的业务Pipeline


短视频拍摄场景下的业务Pipeline


3、组件开发设计


在应用端开发过程中,研发同学往往会将一个功能复杂的库,分割为若干个功能责职单一的小组件,并通过Maven(Android)或者 Cocoapod(iOS)进行组件的管理。然后Gradle 和Xcode 会自动梳理组件间的依赖关系,让业务同学不用关心各个组件,只需关心业务本身即可。



但是,视频云终端SDK,构建的目标产物是SDK,而不是App。因此,我们在面对SDK这种跨多平台终端时,需要对多平台代码进行管理,功能组件代码分布为:C++代码(主要代码)、object-c代码(iOS)、Java代码(Android)以及 WebAssembly。截止到目前为止,还没有一款好的工具,具备管理混合代码能力,满足多个平台的开发需求。


为此,我们参考CPM,Java Maven,Cocoapod以及Npm等包管理方案,为MediaBox终端SDK量身定制了一套具备多平台的组件管理和依赖的解决方案,通过可调试、高效编译、依赖冲突预警等能力,使得组件可以大规模复用,并实现统一版本迭代。



* 针对不同平台的组件做同一的组件化使用管理,后续会有ACPM组件的专项文章介绍,敬请期待。


4、统一基础能力建设


除了媒体处理部分的统一外,基础能力也进行了整合和统一。比如License管理,以前,每个SDK都有自己的License管理,客户使用时,需要在不同的地方开通授权,而我们增加统一授权后,客户只需通过统一的控制台申请授权,并下载对应类型的MediaBox音视频终端SDK即可。


1)统一授权



2)统一崩溃捕获


通过崩溃捕获的能力,可以捕捉到我们SDK的异常(非我们SDK的不捕获),并第一时间进行分析和修复,打造高稳定性的SDK。



除此之外,我们还增加了线上异常预警、配置下发及埋点能力,针对客户突发异常或者线上兼容性问题实现排障和适配。


04 架构优势


经过音视频终端SDK架构的优化设计后,我们实现了MediaBox一个内核、多个业务引擎,统一的媒体组件和完整的端侧基础能力建设。主要成果如下:


高复用率。端侧媒体组件全复用,代码复用率高达80%,整体SDK包大小下降60%;

高可靠性。经过几个版本的迭代,MediaBox SDK的线上稳定性提升,SDK崩溃下降至十万之一;

高灵活性。MediaBox SDK可以满足客户各种业务的组合能力,比如直播和播放器的组合,直播和实时音视频的组合,更灵活地满足客户的需求;

高性能。通过统一的微内核,统一监管性能指标,内存和CPU占用都有所下降。



基于这样的技术架构,MediaBox将分散的各个SDK,组合成全功能统一出包,并最终组建成视频云MediaBox SDKs产品大家族。



了解更多音视频终端SDK产品信息,欢迎加入官方答疑钉钉群咨询交流:https://qr.dingtalk.com/action/joingroup?code=v1,k1,406j3FqsuYc34fJsJ5MLL+bq6HdzZUbKjY3JeD++AEc=&_dt_no_comment=1&origin=11

相关文章
|
6月前
|
存储 监控 安全
360 企业安全浏览器基于阿里云数据库 SelectDB 版内核 Apache Doris 的数据架构升级实践
为了提供更好的日志数据服务,360 企业安全浏览器设计了统一运维管理平台,并引入 Apache Doris 替代了 Elasticsearch,实现日志检索与报表分析架构的统一,同时依赖 Doris 优异性能,聚合分析效率呈数量级提升、存储成本下降 60%....为日志数据的可视化和价值发挥提供了坚实的基础。
360 企业安全浏览器基于阿里云数据库 SelectDB 版内核 Apache Doris 的数据架构升级实践
|
6月前
|
存储 缓存 关系型数据库
鱼和熊掌如何兼得?一文解析RDS数据库存储架构升级
阿里云RDS率先推出新型存储类型通用云盘,提供低延迟、低成本、高持久性的用户体验。
鱼和熊掌如何兼得?一文解析RDS数据库存储架构升级
|
6月前
|
Cloud Native 关系型数据库 分布式数据库
阿里云瑶池助力九州通B2B电商平台,完成100%云原生架构升级
九州通数字化转型,通过引入阿里云云原生数据库PolarDB,云原生内存数据库Tair等产品,完美支撑了医药电商平台数据库100%云原生化,实现了统一、高效、标准化和可跟踪的B2B医药平台。
458 4
|
2月前
|
存储 SQL 缓存
快手:从 Clickhouse 到 Apache Doris,实现湖仓分离向湖仓一体架构升级
快手 OLAP 系统为内外多个场景提供数据服务,每天承载近 10 亿的查询请求。原有湖仓分离架构,由离线数据湖和实时数仓组成,面临存储冗余、资源抢占、治理复杂、查询调优难等问题。通过引入 Apache Doris 湖仓一体能力,替换了 Clickhouse ,升级为湖仓一体架构,并结合 Doris 的物化视图改写能力和自动物化服务,实现高性能的数据查询以及灵活的数据治理。
快手:从 Clickhouse 到 Apache Doris,实现湖仓分离向湖仓一体架构升级
|
1月前
|
分布式计算 大数据 Serverless
云栖实录 | 开源大数据全面升级:Native 核心引擎、Serverless 化、湖仓架构引领云上大数据发展
在2024云栖大会开源大数据专场上,阿里云宣布推出实时计算Flink产品的新一代向量化流计算引擎Flash,该引擎100%兼容Apache Flink标准,性能提升5-10倍,助力企业降本增效。此外,EMR Serverless Spark产品启动商业化,提供全托管Serverless服务,性能提升300%,并支持弹性伸缩与按量付费。七猫免费小说也分享了其在云上数据仓库治理的成功实践。其次 Flink Forward Asia 2024 将于11月在上海举行,欢迎报名参加。
169 1
云栖实录 | 开源大数据全面升级:Native 核心引擎、Serverless 化、湖仓架构引领云上大数据发展
|
24天前
|
存储 消息中间件 人工智能
ApsaraMQ Serverless 能力再升级,事件驱动架构赋能 AI 应用
本文整理自2024年云栖大会阿里云智能集团高级技术专家金吉祥的演讲《ApsaraMQ Serverless 能力再升级,事件驱动架构赋能 AI 应用》。
|
1月前
|
存储 消息中间件 运维
架构升级的救星!流量回放自动化测试的必备指南
大家好,我是小米,一名29岁的技术宅。今天分享一个物联网领域的实用技能——流量回放自动化测试。系统重构后,测试工作量巨大,本文介绍如何通过日志收集和数据回放进行自动化测试,包括离线、实时和并行回放模式,帮助快速定位Bug,提升测试效率和系统稳定性。欢迎关注我的微信公众号“软件求生”,获取更多技术干货!
39 3
|
30天前
|
存储 SQL 缓存
Apache Doris 3.0 里程碑版本|存算分离架构升级、湖仓一体再进化
从 3.0 系列版本开始,Apache Doris 开始支持存算分离模式,用户可以在集群部署时选择采用存算一体模式或存算分离模式。基于云原生存算分离的架构,用户可以通过多计算集群实现查询负载间的物理隔离以及读写负载隔离,并借助对象存储或 HDFS 等低成本的共享存储系统来大幅降低存储成本。
Apache Doris 3.0 里程碑版本|存算分离架构升级、湖仓一体再进化
|
2月前
|
缓存 物联网 数据库
如何帮助我们改造升级原有架构——基于TDengine 平台
一、简介 TDengine 核心是一款高性能、集群开源、云原生的时序数据库(Time Series Database,TSDB),专为物联网IoT平台、工业互联网、电力、IT 运维等场景设计并优化,具有极强的弹性伸缩能力。同时它还带有内建的缓存、流式计算、数据订阅等系统功能,能大幅减少系统设计的复杂度,降低研发和运营成本,是一个高性能、分布式的物联网IoT、工业大数据平台。 二、TDengine 功能与组件 TDengine 社区版是一开源版本,采用的是 AGPL 许可证,它具备高效处理时序数据所需要的所有功能,包括: SQL 写入、无模式写入和通过第三方工具写入 S标准 SQL 查
75 13
|
3月前
|
安全 网络安全 网络虚拟化
优化大型企业网络架构:从核心到边缘的全面升级
大型企业在业务运作中涉及多种数据传输,涵盖办公应用、CRM/ERP系统、数据中心、云环境、物联网及安全合规等多个方面。其复杂的业务生态和全球布局要求网络架构具备高效、安全和可靠的特性。网络设计需全面考虑核心层、汇聚层和接入层的功能与冗余,同时实现内外部的有效连接,包括广域网连接、远程访问策略、云计算集成及多层次安全防护,以构建高效且可扩展的网络生态系统。
优化大型企业网络架构:从核心到边缘的全面升级
下一篇
无影云桌面