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

    文章

    181

    浏览量

    27388
  • 鸿蒙
    +关注

    关注

    57

    文章

    2350

    浏览量

    42842
收藏 人收藏

    评论

    相关推荐

    鸿蒙ArkTS媒体组件:Polygon

    多边形绘制组件
    的头像 发表于 07-17 15:05 333次阅读
    <b class='flag-5'>鸿蒙</b>ArkTS<b class='flag-5'>媒体</b><b class='flag-5'>组件</b>:Polygon

    鸿蒙ArkTS媒体组件:Line

    直线绘制组件
    的头像 发表于 07-17 10:25 416次阅读
    <b class='flag-5'>鸿蒙</b>ArkTS<b class='flag-5'>媒体</b><b class='flag-5'>组件</b>:Line

    鸿蒙ArkTS媒体组件:Polyline

    折线绘制组件
    的头像 发表于 07-17 09:43 266次阅读
    <b class='flag-5'>鸿蒙</b>ArkTS<b class='flag-5'>媒体</b><b class='flag-5'>组件</b>:Polyline

    鸿蒙ArkTS媒体组件:Ellipse

    椭圆绘制组件
    的头像 发表于 07-16 15:20 293次阅读

    鸿蒙开发接口媒体:【@ohos.multimedia.media (媒体服务)】

    媒体子系统为开发者提供一套简单且易于理解的接口,使得开发者能够方便接入系统并使用系统的媒体资源。
    的头像 发表于 06-06 11:03 862次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b>接口<b class='flag-5'>媒体</b>:【@ohos.multimedia.media (<b class='flag-5'>媒体</b>服务)】

    鸿蒙OS开发学习:【尺寸适配实现】

    鸿蒙开发中,尺寸适配是一个重要的概念,它可以帮助我们在不同屏幕尺寸的设备上正确显示和布局我们的应用程序。本文将介绍如何在鸿蒙开发中实现尺寸适配的方法。
    的头像 发表于 04-10 16:05 1747次阅读
    <b class='flag-5'>鸿蒙</b>OS<b class='flag-5'>开发</b><b class='flag-5'>学习</b>:【尺寸适配实现】

    深圳市24年,实现鸿蒙原生应用数占全国总量10%以上

    有更多的鸿蒙人才。鸿蒙开发工程师也将会迎来爆发式的增长,学习鸿蒙势在必行! ​要从事鸿蒙
    发表于 03-04 21:42

    鸿蒙实战项目开发:【短信服务】

    、OpenHarmony 多媒体技术、Napi组件、OpenHarmony内核、Harmony南向开发鸿蒙项目实战等等)鸿蒙(Harmon
    发表于 03-03 21:29

    鸿蒙媒体开发【简述】

    录制)、图片等。 如下图所示,媒体系统面向应用开发提供音视频应用、图库应用的编程框架接口;面向设备开发提供对接不同硬件芯片适配加速功能;中间以服务形态提供媒体核心功能和管理机制。 音
    发表于 02-28 17:53

    学习鸿蒙背后的价值?星河版开放如何学习

    需要有更多的鸿蒙人才;鸿蒙开发工程师也将会迎来爆发式的增长! 所以学习鸿蒙势在必行,而大部分人都能适合学
    发表于 02-22 20:55

    鸿蒙ArkUI开发-Tabs组件的使用

    鸿蒙ArkUI开发-Tabs组件的使用
    的头像 发表于 01-19 16:01 1887次阅读
    <b class='flag-5'>鸿蒙</b>ArkUI<b class='flag-5'>开发</b>-Tabs<b class='flag-5'>组件</b>的使用

    鸿蒙开发OpenHarmony组件复用案例

    ) } }, item => item) } } } 本文主要是对鸿蒙开发基础当中的OpenHarmony技术组件复用示例, 更多鸿蒙开发
    发表于 01-15 17:37

    鸿蒙开发基础-Web组件之cookie操作

    }) ... } ... 本文章主要是对鸿蒙开发当中ArkTS语言的基础应用实战,Web组件里的cookie操作。更多的鸿蒙应用开发
    发表于 01-14 21:31

    免费学习鸿蒙(HarmonyOS)开发,一些地址分享

    国内一流高校。通过鸿蒙班的设立,高校可以为学生提供专业的鸿蒙OS学习环境和丰富的实践机会,培养出更多的鸿蒙开发人才,为
    发表于 01-12 20:48

    鸿蒙基础开发实战-(ArkTS)像素转换

    的使用。通过像素转换案例,向开发者讲解了如何使用像素单位设置组件的尺寸、字体的大小以及不同像素单位之间的转换方法。更多鸿蒙4.0的学习,可以前往主页
    发表于 01-11 16:53