本专栏将分享阿里云视频云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产品信息,欢迎前往官网体验:

音视频终端SDK_智能媒体服务 IMS_视频服务_阿里云

深度解读MediaBox SDKs如何实现技术架构升级的更多相关文章

  1. 如何用区块链技术解决信任问题?Fabric 架构深度解读

    阿里妹导读:区块链技术,随着比特币的兴起而为大家所知.但是具体到技术本身,大家相对熟悉的几个词可能是“数据不可篡改”.“公开链”.“分布式数据”.“共识机制”等. 这篇文章将抛砖引玉,通过深度解读Hy ...

  2. 支持 gRPC 长链接,深度解读 Nacos 2.0 架构设计及新模型

    支持 gRPC 长链接,深度解读 Nacos 2.0 架构设计及新模型 原创 杨翊(席翁) 阿里巴巴云原生 2020-12-28    

  3. 深度为君剖析CTO、技术总监、首席架构师的区别

      CTO.技术总监.首席架构师的区别 经常有创业公司老板来拜访我,常常会拜托给我一句话:帮我找一个CTO. 我解释的多了,所以想把这个写下来,看看你到底需要的应该是啥. 一.高级程序员 如果你是一个 ...

  4. 我就是认真:Linux SWAP 深度解读(必须收藏)

    我就是认真:Linux SWAP 深度解读(必须收藏) http://mp.weixin.qq.com/s?__biz=MzA4Nzg5Nzc5OA==&mid=2651660097& ...

  5. SQL Server 2019 深度解读:微软数据平台的野望

    本文为笔者在InfoQ首发的原创文章,主要利用周末时间陆续写成,也算近期用心之作.现转载回自己的公众号,请大家多多指教. 11 月 4 日,微软正式发布了其新一代数据库产品 SQL Server 20 ...

  6. 从Hadoop框架与MapReduce模式中谈海量数据处理(含淘宝技术架构) (转)

    转自:http://blog.csdn.net/v_july_v/article/details/6704077 从hadoop框架与MapReduce模式中谈海量数据处理 前言 几周前,当我最初听到 ...

  7. 从Hadoop骨架MapReduce在海量数据处理模式(包括淘宝技术架构)

    从hadoop框架与MapReduce模式中谈海量数据处理 前言 几周前,当我最初听到,以致后来初次接触Hadoop与MapReduce这两个东西,我便稍显兴奋,认为它们非常是神奇.而神奇的东西常能勾 ...

  8. AI 新技术革命将如何重塑就业和全球化格局?深度解读 UN 报告(上篇)

    欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ 张钦坤 腾讯研究院秘书长蔡雄山 腾讯研究院法律研究中心副主任祝林华 腾讯研究院法律研究中心助理研究员曹建峰 腾讯研究院法律研究中心高级研究员 ...

  9. 001_谈阿里核心业务监控平台SunFire的技术架构

    <1>阿里全球运行指挥中心(GOC)的SunFire出品 <2>在2016年双11全球购物狂欢节中,天猫全天交易额1207亿元,前30分钟每秒交易峰值17.5万笔,每秒支付峰值 ...

  10. 宜人贷PaaS数据服务平台Genie:技术架构及功能

    上篇:架构及组件 一.数据平台的发展 1.1 背景介绍 随着数据时代的到来,数据量和数据复杂度的增加推动了数据工程领域的快速发展.为了满足各类数据获取/计算等需求,业内涌现出了诸多解决方案.但大部分方 ...

随机推荐

  1. 使用mybatis-generator 能生成 但是实际使用时抛出异常Invalid bound statement (not found)

    好多好多好多红 但是重点是一句org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): {}.d ...

  2. pssh 安装使用

    which python # 查看python 是否指向 python2 ll /usr/bin/python # lrwxrwxrwx. 1 root root 7 2020-03-24 03:08 ...

  3. Linux下定时清空某个文件

    问题 在一台单点机器部署完成且运行一段时间后,发现页面接口报错,登上机器发现磁盘满了.通过du -lh --max-depth=1 和 du -sh * 找出是哪个文件. 发现是 项目中 stdout ...

  4. Blazor前后端框架Known-V1.2.9

    V1.2.9 Known是基于C#和Blazor开发的前后端分离快速开发框架,开箱即用,跨平台,一处代码,多处运行. Gitee: https://gitee.com/known/Known Gith ...

  5. 基于Pair-wise和CrossEncoder训练单塔模型

    本文分享自华为云社区<语义检索系统排序模块:基于ERNIE-Gram的Pair-wise和基于RocketQA的CrossEncoder训练单塔模型>,作者: 汀丶. 文本匹配任务数据每一 ...

  6. 记录一次解决数据库连接池连接泄露BUG

    1 BUG现象 系统并发请求,系统停滞无法使用,所有接口都是无法与后端进行交互的状态,系统并没有宕机 2 BUG的业务流程 插入分数方法 涉及插入表ABCD 加了声明式事务 查询分数方法 涉及表ABC ...

  7. Programming abstractions in C阅读笔记:p91-p106

    <Programming Abstractions In C>学习第45天,p91-p102,完成第二章内容学习.总结如下: 一.技术总结 1.垃圾回收 p91,"Some la ...

  8. IDA的使用-1

    IDA的使用-1 主要收集我自己需要掌握的或者以前不知道的 开始界面 重载文件 在我们逆向过程中被文件修改过,这个时候需要我们重载一下,比如说开发过程中加点代码之类的 下面是加载额外文件,这个文件和我 ...

  9. do_fork(一)

    fork 是linux创建进程的系统调用,相关的函数(不只是系统调用)还有 vfork,clone,sys_frok等.这些函数会整理不同参数,再调用到 do_fork 中. 本篇文章主要介绍do_f ...

  10. 数据可视化【原创】vue复合数字形式展示

    做数据可视化的时候,经常碰到需要很灵活的数字形式展示. 先上个效果图: 如图包括名称,数量,别名,单位,上升下降,环比等等的复合数据展示,并且需要支持样式灵活配置. 此组件包括2个模块,父容器组件bo ...