0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

鸿蒙开发学习:【媒体引擎组件】

jf_46214456 来源:jf_46214456 作者:jf_46214456 2024-03-11 17:16 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

简介

HiStreamer是一个轻量级的媒体引擎组件,提供播放、录制等场景的媒体数据流水线处理。

  • 播放场景分为如下几个节点:数据源读取、解封装、解码、输出;
  • 录制场景分为如下几个节点:数据源读取、编码、封装、输出。

这些节点的具体功能,主要在插件中实现。可以插件的形式扩展支持新的数据源、封装格式、编解码格式、输出方式。

逻辑架构

HiStreamer作为媒体引擎,向上对接player_framework(standard设备上)或者media_lite(mini/small设备上),再对外提供应用API。它内部分为三层:

  • 应用场景封装层: 比如HiPlayer, HiRecorder。
  • Pipeline框架层: 包括Pipeline框架,各个Filter节点实现。
  • 插件层: 包括插件框架,各种插件。

逻辑架构图

插件列表

HiStreamer插件列表如下:

插件名称路径外部依赖License功能适用场景
FFMPEG Adapterplugins/ffmpeg_adapterFFMPEGLGPL etc.解封装:mp3,m4a,mp4,wav 解码:mp3,aac支持动态链接的 small/standard设备
File Sourceplugins/source/file_sourceFileSystemApache读取文件数据所有设备
Minimp3 Adapterplugins/minimp3_adapterminimp3CC0解封装: mp3 解码: mp3所有设备
Minimp4 Demuxerplugins/demuxer/minimp4_demuxerminimp4CC0解封装: m4a所有设备
Aac Demuxerplugins/demuxer/aac_demuxerNAApache解封装: aac所有设备
HDI Sinkplugins/hdi_adapterAudio HDIApache播放音乐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

    文章

    190

    浏览量

    29013
  • 鸿蒙
    +关注

    关注

    61

    文章

    3094

    浏览量

    46333
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    支付宝FluidMarkdown鸿蒙版正式开源

    近日,支付宝正式开源面向鸿蒙平台的 FluidMarkdown ——一款专为智能化业务场景打造的移动端 Markdown 渲染库。作为首个适配 HarmonyOS 平台的流式 Markdown 引擎
    的头像 发表于 12-26 13:42 945次阅读

    如何申请鸿蒙开发板?想体验鸿蒙生态。

    如何申请鸿蒙开发板?想体验鸿蒙生态。
    发表于 11-29 08:34

    花椒直播首次开源推流器组件鸿蒙开发者提供高性能推流解决方案

    器。该工具基于花椒直播自主通用多媒体框架HJMedia打造而来,采用创新的通用多媒体框架设计,以高度模块化、可扩展的插件化架构,极大提升了音视频功能开发效率与整体的资源利用率,为开发
    的头像 发表于 09-04 09:52 901次阅读
    花椒直播首次开源推流器<b class='flag-5'>组件</b> 为<b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b>者提供高性能推流解决方案

    【汇思博SEEK100开发板试用体验】在开发鸿蒙OS搭建QT开发环境

    应用所需的功能逻辑。比如与开发板的硬件功能进行交互,若要调用开发板的摄像头功能,可通过相关的 Qt 多媒体库结合鸿蒙系统提供的摄像头接口进行开发
    发表于 08-24 18:34

    基于开源鸿蒙的AVPlayer视频播控开发样例

    在开源鸿蒙生态建设中,多媒体能力是构建丰富用户体验的核心要素。本开发样例基于AVPlayer实现,AvPlayer支持流媒体和本地资源解析、媒体
    的头像 发表于 08-21 10:22 3366次阅读
    基于开源<b class='flag-5'>鸿蒙</b>的AVPlayer视频播控<b class='flag-5'>开发</b>样例

    基于开源鸿蒙的视频播放开发样例

    在开源鸿蒙生态建设中,多媒体能力是构建丰富用户体验的核心要素。本开发样例针对视频播放场景,聚焦开源鸿蒙原生媒体框架,通过Video
    的头像 发表于 08-19 10:41 1996次阅读
    基于开源<b class='flag-5'>鸿蒙</b>的视频播放<b class='flag-5'>开发</b>样例

    鸿蒙非侵入式弹窗新解法,企查查正式开源“QuickDialog”弹窗组件

    近日,企查查将其自研的鸿蒙弹窗组件库“QuickDialog”开源,并上线至 OpenHarmony 三方库中心仓。这是鸿蒙生态首个支持“弹窗堆栈暂存能力”的非侵入式弹窗解决方案,凭借其灵活、高效
    的头像 发表于 07-31 10:40 943次阅读
    <b class='flag-5'>鸿蒙</b>非侵入式弹窗新解法,企查查正式开源“QuickDialog”弹窗<b class='flag-5'>组件</b>库

    蜻蜓FM开源“SmartXPlayer”音频播放组件,打造鸿蒙多端音频播放新引擎

    近日,由蜻蜓FM研发的音频播放组件“SmartXPlayer”正式开源并上线 OpenHarmony 三方库中心仓。作为一款专为鸿蒙多端场景打造的音频播放引擎,SmartXPlayer基于鸿蒙
    的头像 发表于 07-21 16:31 886次阅读
    蜻蜓FM开源“SmartXPlayer”音频播放<b class='flag-5'>组件</b>,打造<b class='flag-5'>鸿蒙</b>多端音频播放新<b class='flag-5'>引擎</b>

    【HarmonyOS 5】鸿蒙页面和组件生命周期函数

    【HarmonyOS 5】鸿蒙页面和组件生命周期函数 ##鸿蒙开发能力 ##HarmonyOS SDK应用服务##鸿蒙金融类应用 (金融理财
    的头像 发表于 07-11 18:24 1271次阅读

    【HarmonyOS 5】金融应用开发鸿蒙组件实践

    【HarmonyOS 5】金融应用开发鸿蒙组件实践 ##鸿蒙开发能力 ##HarmonyOS SDK应用服务##
    的头像 发表于 07-11 18:20 1234次阅读
    【HarmonyOS 5】金融应用<b class='flag-5'>开发</b><b class='flag-5'>鸿蒙</b><b class='flag-5'>组件</b>实践

    飞书开源“RTV”富文本组件 重塑鸿蒙应用富文本渲染体验

    更高效的富文本解决方案。 富文本作为内容展示和信息交互的重要形式,在内容创作、办公协作、教育学习、企业应用等多种复杂业务场景中扮演着重要角色。随着鸿蒙生态应用类型的不断丰富,富文本渲染成为各类应用开发过程中不可或缺的基础能力。
    的头像 发表于 07-11 15:20 890次阅读
    飞书开源“RTV”富文本<b class='flag-5'>组件</b> 重塑<b class='flag-5'>鸿蒙</b>应用富文本渲染体验

    开鸿开发板深度体验:从开源鸿蒙开发到AI场景实践

    开鸿开发板KaihongBoard-3588S-SBCKaihongBoard-3576-SBC体验开源鸿蒙能力学习开源鸿蒙开发●●●搭载K
    的头像 发表于 07-03 17:03 2159次阅读
    开鸿<b class='flag-5'>开发</b>板深度体验:从开源<b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b>到AI场景实践

    鸿蒙5开发宝藏案例分享---Swiper组件性能优化实战

    鸿蒙宝藏:Swiper组件性能优化实战,告别卡顿丢帧! 大家好!最近在鸿蒙开发时,偶然发现了官方文档里埋藏的 性能优化宝藏案例 ,尤其是<span class=\"
    发表于 06-12 17:53

    鸿蒙5开发宝藏案例分享---分析帧率问题

    鸿蒙性能优化宝藏:帧率问题实战案例解析 嘿,各位鸿蒙开发者! 今天分享一个开发中的大发现——鸿蒙官方文档里藏着一堆超实用的性能优化案例!这些
    发表于 06-12 17:07

    使用DevEcoStudio 开发、编译鸿蒙 NEXT_APP 以及使用中文插件

    # 使用DevEcoStudio 开发、编译鸿蒙 NEXT_APP 以及使用中文插件 #鸿蒙开发工具 #DevEco Studio ## 1. 概述 DevEco Studio 是
    发表于 06-11 17:18