OpenHarmony 3.1 Beta版本关键特性解析——HiStreamer轻量级可定制的媒体管线框架

鸿蒙开发学习:【媒体引擎组件】 HiStreamer是一个轻量级的媒体引擎组件,提供播放、录制等场景的媒体数据流水线处理。播放场景分为如下几个节点:数据源读取、解封装、解码、输出;录制场景分为如下几个节点:数据源读取、编码、封装、输出。这些节点的具体功能,主要在插件中实现。可以插件的形式扩展支持新的数据源、封装格式、编解码格式、输出方式。 阅读详情

(以下内容来自开发者分享,不代表 OpenHarmony 项目群工作委员会观点)

陈国栋
 

数字多媒体技术在过去的数十年里得到了飞速的发展,多媒体终端设备如智能音箱、智能门锁、智能手表广泛应用于人们生活中。如此小的设备却能承载如此多功能是如何实现的呢?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(输出)四个环节处理的过程。

这四个环节和下面四个节点一一对应:

1. 输入节点:读取音频文件,获取文件数据流。

2. 解封装节点:对文件数据流进行解封装,获得文件头信息和 ES 数据(即 Element Streams,编码过的数据流)。

3. 解码节点:解码器对 ES 数据进行解码,获得 PCM(Pulse-code modulation)码流。

4. 输出节点:PCM 码流送到音频输出模块,播放出声音。

这四个节点按顺序连接形成管道(Pipeline),如图2所示。

图2 音频播放管道

由于节点是支持灵活拼装的,你可以根据自己的需要,选择不同的节点,拼装出不同的管道。比如可以拼装出音视频录制的管道(如图 3),当然也可以是完成其它功能的管道。

图3 音频录制管道

  • 参数自动协商


为了让管道中的各个节点互相配合,形成高效的数据处理通道,HiStreamer 支持参数自动协商。下面以解封装节点和解码节点的参数自动协商为例进行介绍,如图 4 所示。

图4 节点参数协商示意图

如上图所示,经过解封装节点后确定当前数据流是 AAC-HE 格式,在协商过程中,解码节点从备选插件列表中选择最匹配的插件(插件 2),形成最终的业务处理通道,使得它们可以高效的协同工作。

3、可扩展,支持插件按需扩展

上文已提到 HiStreamer 的主要业务功能在插件中实现,Pipeline 框架的每个节点,都有对应的插件。如播放场景有输入节点、解封装节点、解码节点和输出节点,它们对应的插件是:输入插件、解封装插件、解码插件和输出插件。

采用这种设计方式,公共的业务逻辑和上下游节点的连接在节点中完成,插件只需要实现业务功能差异化的部分,这使得插件实现更简单。已有的媒体解封装/解码算法,也可以封装成 HiStreamer 插件。同时 HiStreamer 已经适配了 FFMPEG(跨平台的媒体算法库),可以比较方便支持 FFMPEG 已经支持的媒体格式(如 mp3、aac 等)。

四、结束语

了解完 HiStreamer 的特性,你是否也对它产生了浓厚的兴趣呢?

目前多媒体行业存在大量的潜在的业务创新需求,欢迎广大开发者一起加入,使用 HiStreamer 共同丰富多媒体生态,共同创造万物互联的新世界!

OpenHarmony之Histreamer引擎深度解析:pipeline_core架构如何全面取代GStreamer,一统音视频播放与录制 Histreamer是OpenHarmony多媒体框架的核心媒体引擎,采用架构设计。一个轻量级的媒体引擎组件,提供播放、录制等场景的媒体数据流水线处理。1.播放场景分为如下几个节点:数据源读取、解封装、解码、输出;2.录制场景分为如下几个节点:数据源读取、编码、封装、输出。该引擎从OH5.0开始取代了原有的媒体引擎gstreamer(部分文档还保留较老架构的讲解),提供统一的音视频播放、录制、元数据解析等能力。 阅读详情

相关推荐

Petalinux 2021.1 + Vivado 2021 实战:手把手教你为Zynq板卡移植Linux并搞定AXI DMA驱动

本文详细介绍了基于Petalinux 2021.1和Vivado 2021工具链,为Zynq开发板移植Linux系统并开发AXI DMA驱动的全流程。从环境配置、硬件设计到驱动适配与性能优化,提供了实战避坑技巧和版本特异性问题的解决方案,帮助开发者快速构建高速数据传输系统。

weixin_42641741的博客 386

OpenHarmony Histreamer流程介绍

OpenHarmony HiStreamer框架揭秘!1小时极速认识HiPlayer/HiRecoder全流程,深入探讨媒体引擎开发!

PayPal支付集成完全指南:开源库实践

本文介绍了如何从零开始集成PayPal支付功能。首先概述了PayPal提供的多语言SDK和开源库,包括PHP、Python、Node.js等版本。然后详细说明了准备工作,包括注册开发者账号、获取API凭证和使用沙盒环境测试。文章以Node.js为例,演示了安装SDK、基础配置和实现支付流程的完整代码,包括创建订单和捕获支付两个核心功能。最后提及了订阅支付等高级功能,为开发者提供了完整的支付集成方案。通过清晰的代码示例和步骤说明,帮助开发者快速实现PayPal支付功能集成。

2501_93501927的博客 1258

OpenHarmony学习multimedia_histreamer

multimedia_histreamermultimedia_histreamer multimedia_histreamer multimedia_histreamer

嵌入式与人工智能 537

小米CyberGear微电机驱动代码(CAN总线驱动,含开源地址)

小米CyberGear微电机驱动代码(ROS下的CAN总线驱动,含开源地址)

2302_80751833的博客 4431

大数据应用技术实验报告一 Hadoop三种模式安装配置

JDK+Hadoop安装配置、单机模式配置 以下操作在SecureCRT里面完成 1.关闭防火墙 firewall-cmd --state 显示防火墙状态running/not running systemctl stop firewalld 临时关闭防火墙,每次开机重新开启防火墙 systemctl disable firewalld 禁止防火墙服务。 2.传输JDK和HADOOP压缩包 Sec...

Ruthless_Childe的博客 3090

OpenHarmony媒体引擎的发展

本文主要介绍下OpenHarmony标准系统系统服务层的媒体引擎的演进发展策略。

m0_64778763的博客 670

从模型车到真实路口:基于YOLOv5-Lite与SORT的轻量化车流量检测系统实战

本文详细阐述了如何将基于YOLOv5-Lite与SORT的轻量化车流量检测系统从毕业设计原型部署到真实路口。文章聚焦于解决在嵌入式平台(如树莓派)上实现实时、稳定检测的工程挑战,涵盖数据采集、模型微调、系统集成及动态信号灯策略,为智能交通灯系统提供了实用的轻量化解决方案。

weixin_29179311的博客 125

OpenHarmony音视频开发概述:媒体组件

m0_64778763的博客 936

开关变换器小信号建模实战:从理论到环路设计

本文深入探讨了开关变换器小信号建模的实战技巧,从理论基础到环路设计全面解析。通过Buck和Boost变换器的具体案例,详细介绍了状态空间平均法、扰动法等关键建模技术,并分享环路补偿设计和实际调试中的宝贵经验。文章特别强调了小信号建模在电源设计中的重要性,为工程师提供了从理论到实践的完整解决方案。

weixin_29290259的博客 376

【AMD显卡在WIndow10/11部署带GPU支持的深度学习环境(Pytorch-DirectML篇)】

这篇是之前Tensorflow-DirectML的姊妹篇,如果对TF感兴趣的可以搜索我的博文。 首先我们丢一个官网地址,但是官网那个会误导新人如果你按那个操作的话。 https://docs.microsoft.com/en-us/windows/ai/directml/gpu-pytorch-windows 这里用我的方法操作: 首先声明一下,因为我的显卡是AMD RX6600,不带XT(性能和RTX3060 12G版本半斤八两),所以目前没有最新的WSL2驱动,如果有了的话欢迎告知我,所以我这里就.

weixin_44029053的博客 2万+

OpenHarmony AVCodec模块分析(六):速看5.0-Beta1更新了什么

本文将介绍OpenHarmony-v5.0-beta1 AVCodec模块更新的内容及应用的调用流程。

m0_64778763的博客 1791

非目标代谢组学(untargeted metabolomics)中常用的方法学考察的方法(四)

最早使用的一种方法,从QC样本的总离子流图中选择具有代表性的离子峰(覆盖不同的保留时间,不同的强度),在对QC样本进行重复检测之后,计算这些离子的保留时间以及峰面积的相对标准偏差(RSD),用以考察分析方法的稳定性以及重复性。所有样品检测完之后,收集所有的QC样本的原始数据进行数据预处理,包括(峰提取,排列,归一化等),经过数据过滤(80%规则)之后,计算剩下的峰的峰面积的RSD值。由于QC样本是 等量混合了所有的被检测样本,理论上QC样本包含了所有样本中的代谢物,因此QC样本理论上会。

hlllllllhhhhh的博客 1487

OpenHarmony 3.1 Release版本关键特性解析——OpenHarmony新音视频引擎——HiStreamer

数字多媒体技术在过去的数十年里得到了飞速的发展,音乐、电话、电视、电影、视频会议等等,伴随着我们度过每一天。为了给用户提供丰富的多媒体处理能力,业界已经有比较成熟的音视频引擎,比如开源的音视频引擎 GStreamer。为什么我们还要打造一款新的音视频引擎呢?

OpenHarmony_dev的博客 1909

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

OpenHarmony媒体子系统媒体引擎组件

HiStreamer作为媒体引擎,向上对接player_framework(standard设备上)或者media_lite(mini/small设备上),再对外提供应用API。这些节点的具体功能,主要在插件中实现。可以插件的形式扩展支持新的数据源、封装格式、编解码格式、输出方式。HiStreamer是一个轻量级的媒体引擎组件,提供播放、录制等场景的媒体数据流水线处理。需要C++11版本或以上。4、媒体引擎组件代码目录。

程序猿老樊的博客 605

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

OpenHarmony 3.1 Release版本特性讲解

OpenHarmony 3.1 Release版本特性讲解

Havi 2166

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

GStreamer使用详解

使用系统自带的源,安装过程中会报错,因此先切换源,这里优先选择清华的源,阿里的源部分不维护,会安装报错。 1.备份原来的源,将以前的源备份一下,以防以后可以用的。 sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak 2.打开/etc/apt/sources.list文件,在前面添加如下条目,并保存。 sudo vim /etc/apt/sources.list 3.摁i进入插入模式 4.然后摁 键盘的delete删除原有的源 ...

程序猿老樊的博客 6133

OpenHarmony Histreamer引擎性能大揭秘,【深度学习01】快速上手 PyTorch:环境 + IDE+Dataset。

Histreamer的pipeline_core架构通过模块化、零拷贝传输及事件驱动模型,在性能和扩展性上全面超越GStreamer。其与OpenHarmony硬件抽象层的深度结合,为音视频处理提供了更高效的标准化解决方案。未来随着异构计算能力的进一步开放,Histreamer有望成为泛终端多媒体处理的统一基础设施。

2501_93988713的博客 365

OpenHarmony 3.1 Release版本关键特性解析——HDI硬件设备接口介绍

HDF 驱动框架是 OpenAtom OpenHarmony(简称“OpenHarmony”)系统硬件生态开放的基础,为驱动开发者提供了驱动加载、驱动服务管理和驱动消息机制等驱动框架能力,同时还为开发者提供了规范的HDI硬件设备接口,让开发者能屏蔽南向设备差异,提供更好的硬件。本文将为大家带来 HDI 硬件设备接口的介绍。...

OpenHarmony_dev的博客 2682

OpenHarmony 3.2 Release版本实战开发——Codec HDI适配过程

OpenHarmony Codec HDI(Hardware Device Interface)驱动框架基于 OpenMax 实现了视屏硬件编解码驱动,提供 Codec 基础能力接口供上层媒体服务调用,包括获取组件编解码能力、创建组件、参数设置、数据的轮转和控制、以及销毁组件等功能,实现对视频数据的编解码处理。

m0_70748458的博客 792

rk3568 OpenHarmony 3.2 Release 编译(踩坑记)-从镜像站点获取源码包编译失败

实在无解,怀疑是源码压缩包解压后的路径不是打包路径,怀疑要完整的按照压缩包解压的路径存放源码,即源码路径/root/data/harmony/release_code/2023-040-09/OpenHarmony-v3.2-Release/OpenHarmony/查看foundation/multimedia/histreamer/engine/plugin/core/plugin_register.cpp源码,包含头文件all_plugin_static.h,但是该头文件没有生成,

damifeng的专栏 4377

【OpenHarmony】OpenHarmony 简介 ( HarmonyOS / OpenHarmony - Android / AOSP 对比关联 | 鸿蒙开发者定位及使用的开发语言和开发工具)

一、OpenHarmony 简介 1、OpenHarmony 由来 2、OpenHarmony 架构 3、OpenHarmony 特点 二、HarmonyOS / OpenHarmony - Android / AOSP 对比关联 1、HarmonyOS 与 Android 的关系 2、HarmonyOS 与 OpenHarmony 的关系 3、HarmonyOS 与 OpenHarmony 的版本迭代 三、鸿蒙开发者定位及使用的开发语言和开发工具

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 8607

OpenHarmony源码学习之编译构建

OpenHarmony是由开放原子开源基金会(OpenAtom Foundation)孵化及运营的开源项目,目标是面向全场景、全连接、全智能时代、基于开源的方式,搭建一个智能终端设备操作系统的框架和平台,促进万物互联产业的繁荣发展。最近在学习OpenHarmony源代码,个人认为学习有三个阶段,分别是看实操写(归纳总结),本着追求学习的终极目标,因此有了这篇文章。构建工具由shell脚本python脚本gnninjiaclang/llvm等构成。

phmatthaus的专栏 1936

OpenHarmony内核的特点

鸿蒙操作系统,即HarmonyOS,是华为公司自主研发的基于微内核的全场景分布式操作系统。它旨在为不同的设备提供统一的操作系统和用户体验,支持多种终端设备,包括智能手机、平板电脑、智能电视、可穿戴设备等。而OpenHarmony则是由开放原子开源基金会孵化及运营的开源项目,它是HarmonyOS的基础,提供了系统的框架和内核。

jikuaidi6yuan的博客 1225

OpenHarmony 3.2 Beta多媒体系列——音视频播放gstreamer

ctrler_是PlayBinCtrlerBase类型的变量,直接看PlayBinCtrlerBase的ReportMessage方法,这个方法的核心,是创建一个任务后,将任务放入消息队列中,等待消息被处理,这里我们最想知道的是这个消息会在什么地方被处理。通过bin降低了应用的复杂度。前面调用了PrepareAsync,所以当前的状态是Prepared,调用到了PreparedState的Play()方法,这个方法还是按照之前Prepare的方式,调回到PlayerServer的HandlePlay()。

OpenHarmony_dev的博客 1359
上一篇: OpenHarmony 3.1 Beta版本关键特性解析——HAP包安装实现剖析
下一篇: OpenHarmony v3.1 Release版本发布
OpenHarmony开发者
博客等级 码龄5年 626粉丝 221原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值