简介
HiStreamer是一个轻量级的媒体引擎组件,提供播放、录制等场景的媒体数据流水线处理。
●播放场景分为如下几个节点:数据源读取、解封装、解码、输出;
●录制场景分为如下几个节点:数据源读取、编码、封装、输出。
这些节点的具体功能,主要在插件中实现。可以插件的形式扩展支持新的数据源、封装格式、编解码格式、输出方式。
逻辑架构
HiStreamer作为媒体引擎,向上对接player_framework(standard设备上)或者media_lite(mini/small设备上),再对外提供应用API。它内部分为三层:
●应用场景封装层: 比如HiPlayer, HiRecorder。
●Pipeline框架层: 包括Pipeline框架,各个Filter节点实现。
●插件层: 包括插件框架,各种插件。
插件列表
HiStreamer插件列表如下:
目录
仓目录结构如下:
/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 # 引擎对外接口
写在最后
●如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙:
●点赞,转发,有你们的 『点赞和评论』,才是我创造的动力。
●关注小编,同时可以期待后续文章ing ,不定期分享原创知识。