共计 2573 个字符,预计需要花费 7 分钟才能阅读完成。
作者:陈国栋
数字多媒体技术在过来的数十年里失去了飞速的倒退,多媒体终端设备如智能音箱、智能门锁、智能手表广泛应用于人们生存中。如此小的设施却能承载如此多功能是如何实现的呢?HiStreamer 轻量级可定制的媒体管线框架为你解答!接下来咱们一起探秘 HiStreamer 轻量级可定制的媒体管线框架。
媒体管线框架是什么?
在讲 HiStreamer 之前,咱们先来理解下媒体管线框架是什么?
媒体框架是解决数字媒体信息(如编解码音视频数据)的软件框架。为了更容易扩大媒体框架反对更多媒体格局或反对更多功能,呈现了 Pipeline 架构的媒体框架,如开源 GStreamer 等。采纳 Pipeline 架构的媒体框架,称为媒体管线框架。它通常的做法是将根底媒体解决,例如数据读取、编解码等封装成一个个处理单元,而后用管道将这些处理单元串起来,从而实现媒体文件播放等各种性能。
HiStreamer 是什么?
随着 AI 技术的倒退,语音辨认、人脸识别、场景了解等技术的提高撑持了智能音箱等新设施和新利用的呈现,对媒体框架提出了新的要求。因而 HiStreamer 应运而生了。
HiStreamer 是基于 Pipeline 架构,用来解决媒体数据的软件框架。它具备轻量级、可定制、可扩大、可跨不同芯片和 OS 平台部署的特点。从逻辑架构上讲,HiStreamer 次要由 HiStreamer 引擎和插件形成。HiStreamer 引擎又由业务封装层、Pipeline 框架层、插件管理层和工具库组成。插件次要由平台软件插件和厂商扩大插件两局部组成。如图 1 所示。
图 1 HiStreamer 逻辑架构
HiStreamer 引擎性能可裁剪(如裁剪视频),解决流程可灵便拼装。它次要包含以下几局部内容:
• 业务封装层:基于 Pipeline 封装实现播放器、录音机性能,简化下层利用应用。
• Pipeline 框架层:提供 Pipeline 和若干个节点(输出、解封装、解码和输入)的实现,反对把多个节点连贯在一起造成 Pipeline。
• 插件管理层:用于治理插件生命周期,反对动静加载或动态链接两种形式应用插件。
• 工具库:提供框架依赖的工具,隔离操作系统差别,提供调测性能。
插件可弹性部署、动静伸缩,次要包含以下几局部内容:
• 平台软件插件:可跨产品复用的软件算法插件。
• 厂商扩大插件:厂商提供的基于硬件加速的插件,如硬件加速的编解码插件。
以上是对 HiStreamer 的特点和整体逻辑构造的一个总的概述,接下来咱们具体分析它的要害个性。
HiStreamer 的要害个性
HiStreamer 之所以能成为业界首个轻量级设施上可用、可定制的媒体管线框架,是因为它有以下的要害个性。
1、轻量级,可弹性部署到物联网设施
HiStreamer 的轻量级特点次要体现在精简的外围框架、插件弹性部署。
如图 1 所示,HiStreamer 的 Pipeline 框架由形象管道(Pipeline)和节点形成,负责依据业务编排关系连贯各个节点,造成数据流解决管道。它只实现系统调度必要的性能,具体业务解决由插件实现,比方文件数据读取由 File 插件实现,网络流媒体数据读取由 http 插件实现,MP3 解封装由 MP3 Demuxer 插件实现,MP3 解码由 MP3 Decoder 插件实现,音频输入由 Sinker 插件实现。插件管理层次要负责插件的加载 / 卸载 / 查问和调用。插件采纳弹性部署形式,轻量级设施依据业务需要部署须要的插件,从而大大减少资源占用。
2、可定制,反对节点灵便拼装和参数主动协商
HiStreamer 采纳 Pipeline 架构模式,各个节点解耦,反对节点灵便拼装,能够依据业务须要拼装出不同的 Pipeline。为了多个节点能更好地协同工作,反对参数主动协商。接下来咱们别离介绍 HiStreamer 如何反对节点灵便拼装和参数主动协商的?
• 节点灵便拼装
HiStreamer 能够用来反对音视频解码播放,或音视频编码录制等。以音视频文件播放为例,音视频解码播放实质上是通过媒体框架将数据(音频数据、视频数据)按程序通过 Source(输出)、Demuxer(解封装)、Decoder(解码)和 Sink(输入)四个环节解决的过程。
这四个环节和上面四个节点一一对应:
- 输出节点:读取音频文件,获取文件数据流。
- 解封装节点:对文件数据流进行解封装,取得文件头信息和 ES 数据(即 Element Streams,编码过的数据流)。
- 解码节点:解码器对 ES 数据进行解码,取得 PCM(Pulse-code modulation)码流。
- 输入节点:PCM 码流送到音频输出模块,播放出声音。
这四个节点按程序连贯造成管道(Pipeline),如图 2 所示。
图 2 音频播放管道
因为节点是反对灵便拼装的,你能够依据本人的须要,抉择不同的节点,拼装出不同的管道。比方能够拼装出音视频录制的管道(如图 3),当然也能够是实现其它性能的管道。
图 3 音频录制管道
• 参数主动协商
为了让管道中的各个节点互相配合,造成高效的数据处理通道,HiStreamer 反对参数主动协商。上面以解封装节点和解码节点的参数主动协商为例进行介绍,如图 4 所示。
图 4 节点参数协商示意图
如上图所示,通过解封装节点后确定以后数据流是 AAC-HE 格局,在协商过程中,解码节点从备选插件列表中抉择最匹配的插件(插件 2),造成最终的业务解决通道,使得它们能够高效的协同工作。
3、可扩大,反对插件按需扩大
上文已提到 HiStreamer 的次要业务性能在插件中实现,Pipeline 框架的每个节点,都有对应的插件。如播放场景有输出节点、解封装节点、解码节点和输入节点,它们对应的插件是:输出插件、解封装插件、解码插件和输入插件。
采纳这种设计形式,公共的业务逻辑和上下游节点的连贯在节点中实现,插件只须要实现业务性能差异化的局部,这使得插件实现更简略。已有的媒体解封装 / 解码算法,也能够封装成 HiStreamer 插件。同时 HiStreamer 曾经适配了 FFMPEG(跨平台的媒体算法库),能够比拟不便反对 FFMPEG 曾经反对的媒体格式(如 mp3、aac 等)。
**
结束语 **
理解完 HiStreamer 的个性,你是否也对它产生了浓重的趣味呢?目前多媒体行业存在大量的潜在的业务翻新需要,欢送宽广开发者一起退出,应用 HiStreamer 独特丰盛多媒体生态,独特发明万物互联的新世界!