简介
HiStreamer是一个轻量级的媒体引擎组件,提供播放、录制等场景的媒体数据流水线处理。
- 播放场景分为如下几个节点:数据源读取、解封装、解码、输出;
- 录制场景分为如下几个节点:数据源读取、编码、封装、输出。
这些节点的具体功能,主要在插件中实现。可以插件的形式扩展支持新的数据源、封装格式、编解码格式、输出方式。
逻辑架构
HiStreamer作为媒体引擎,向上对接player_framework(standard设备上)或者media_lite(mini/small设备上),再对外提供应用API。它内部分为三层:
- 应用场景封装层: 比如HiPlayer, HiRecorder。
- Pipeline框架层: 包括Pipeline框架,各个Filter节点实现。
- 插件层: 包括插件框架,各种插件。

插件列表
HiStreamer插件列表如下:
| 插件名称 | 路径 | 外部依赖 | License | 功能 | 适用场景 |
|---|---|---|---|---|---|
| FFMPEG Adapter | plugins/ffmpeg_adapter | FFMPEG | LGPL etc. | 解封装:mp3,m4a,mp4,wav 解码:mp3,aac | 支持动态链接的 small/standard设备 |
| File Source | plugins/source/file_source | FileSystem | Apache | 读取文件数据 | 所有设备 |
| Minimp3 Adapter | plugins/minimp3_adapter | minimp3 | CC0 | 解封装: mp3 解码: mp3 | 所有设备 |
| Minimp4 Demuxer | plugins/demuxer/minimp4_demuxer | minimp4 | CC0 | 解封装: m4a | 所有设备 |
| Aac Demuxer | plugins/demuxer/aac_demuxer | NA | Apache | 解封装: aac | 所有设备 |
| HDI Sink | plugins/hdi_adapter | Audio HDI | Apache | 播放音乐 | mini/small设备 |
目录
仓目录结构如下:
/foundation/multimedia/histreamer # HiStreamer媒体引擎组件业务代码
├─LICENSE # 证书文件
├─engine # 引擎代码
│ ├─foundation # 基础工具类, 包括OS适配
│ ├─include # 为其它模块调用histreamer暴露必要的头文件,包括调用pipeline/filter,或者调用插件
│ │ ├─foundation # histreamer基础工具库,包括日志打印、Buffer工具、操作系统适配、语言扩展等
│ │ ├─pipeline # pipeline框架的头文件,主要是pipeline/filter接口
│ │ └─plugin # 插件相关的头文件
│ │ ├─common # 插件接口依赖的基础类型头文件
│ │ └─interface # 插件接口
│ ├─pipeline # pipeline框架
│ │ ├─core # pipeline核心实现
│ │ ├─factory # filter工厂
│ │ └─filters # 若干filter节点实现
│ │ ├─codec # 编解码节点实现
│ │ ├─common # filters依赖的基础类型定义
│ │ ├─demux # 解封装节点实现
│ │ ├─muxer # 封装节点实现
│ │ ├─sink # 输出节点实现
│ │ └─source # 数据源节点实现
│ ├─plugin # 插件
│ │ ├─common # 插件接口依赖的基础类型定义
│ │ ├─core # 插件框架,各个插件的代理类
│ │ └─plugins # 若干插件实现
│ │ ├─codec_adapter # 硬件编解码适配
│ │ ├─minimp3_adapter # minimp3适配
│ │ ├─ffmpeg_adapter # FFMPEG适配(适配成封装解封装、编解码插件)
│ │ ├─hdi_adapter # HDI适配(适配成输出插件)
│ │ ├─lite_aac_decoder # 轻量级AAC解码器插件
│ │ ├─demuxer # 解封装插件
│ │ ├─sink # 输出插件
│ │ └─source # 数据源插件
│ └─scene # 播放录制等场景的封装实现
│ │ ├─common # 共用的基础类型定义
│ │ ├─lite # 对接到轻量设备的接口实现
│ │ ├─player # 播放场景实现
│ │ ├─recorder # 录制场景实现
│ │ └─standard # 对接到标准设备的接口实现
└─interface # 引擎对外接口
审核编辑 黄宇
审核编辑 黄宇
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
解码
+关注
关注
0文章
189浏览量
28857 -
鸿蒙
+关注
关注
60文章
3015浏览量
46162
发布评论请先 登录
相关推荐
热点推荐
花椒直播首次开源推流器组件 为鸿蒙开发者提供高性能推流解决方案
器。该工具基于花椒直播自主通用多媒体框架HJMedia打造而来,采用创新的通用多媒体框架设计,以高度模块化、可扩展的插件化架构,极大提升了音视频功能开发效率与整体的资源利用率,为开发者
鸿蒙非侵入式弹窗新解法,企查查正式开源“QuickDialog”弹窗组件库
近日,企查查将其自研的鸿蒙弹窗组件库“QuickDialog”开源,并上线至 OpenHarmony 三方库中心仓。这是鸿蒙生态首个支持“弹窗堆栈暂存能力”的非侵入式弹窗解决方案,凭借其灵活、高效
蜻蜓FM开源“SmartXPlayer”音频播放组件,打造鸿蒙多端音频播放新引擎
近日,由蜻蜓FM研发的音频播放组件“SmartXPlayer”正式开源并上线 OpenHarmony 三方库中心仓。作为一款专为鸿蒙多端场景打造的音频播放引擎,SmartXPlayer基于鸿蒙
【HarmonyOS 5】鸿蒙页面和组件生命周期函数
【HarmonyOS 5】鸿蒙页面和组件生命周期函数 ##鸿蒙开发能力 ##HarmonyOS SDK应用服务##鸿蒙金融类应用 (金融理财
飞书开源“RTV”富文本组件 重塑鸿蒙应用富文本渲染体验
更高效的富文本解决方案。 富文本作为内容展示和信息交互的重要形式,在内容创作、办公协作、教育学习、企业应用等多种复杂业务场景中扮演着重要角色。随着鸿蒙生态应用类型的不断丰富,富文本渲染成为各类应用开发过程中不可或缺的基础能力。
鸿蒙5开发宝藏案例分享---Swiper组件性能优化实战
鸿蒙宝藏:Swiper组件性能优化实战,告别卡顿丢帧!
大家好!最近在鸿蒙开发时,偶然发现了官方文档里埋藏的 性能优化宝藏案例 ,尤其是<span class=\"
发表于 06-12 17:53
润和软件旗下润开鸿亮相开源鸿蒙开发者大会2025
近日,开源鸿蒙开发者大会2025(OHDC.2025)于深圳再启新篇,会上正式发布了开源鸿蒙5.1 Release版本,并进行开源鸿蒙应用技术组件
鸿蒙5开发宝藏案例分享---折叠屏悬停态开发实践
?【鸿蒙折叠屏开发宝藏指南】原来官方藏了这么多好东西!手把手教你玩转悬停态开发**?**
Hey小伙伴们!我是你们的老朋友XX,最近在肝鸿蒙折叠屏项目时,意外挖到了官方文档里的隐藏宝藏
发表于 06-03 12:04
2025开源鸿蒙开发者大会圆满落幕
近日,开源鸿蒙开发者大会2025(OHDC.2025,简称“大会”)在深圳隆重开幕。大会正式发布了开源鸿蒙5.1 Release版本,举行了开源鸿蒙应用技术
开源鸿蒙开发新体验,开鸿Bot系列今日开启预售!
操作系统,实现从国产高性能芯片到操作系统的全栈自主化,构建起一站式的开源鸿蒙学习与开发平台。
融合开发与办公场景,打造开源鸿蒙生态的“第一
发表于 05-16 14:13
鸿蒙开发学习:【媒体引擎组件】
评论