OpenHarmony AVCodec模块分析(一):模块简述
一、简介 AVCodec模块为OpenHarmony系统提供了统一的音视频编解码、媒体文件的封装、解封装、媒体数据输入等能力,使得应用能够直接调用系统提供的编解码、封装、解封装API实现音视频的播放、录制、编码等功能。可参考 https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/media/avcodec/avco
一、简介
AVCodec模块为OpenHarmony系统提供了统一的音视频编解码、媒体文件的封装、解封装、媒体数据输入等能力,使得应用能够直接调用系统提供的编解码、封装、解封装API实现音视频的播放、录制、编码等功能。
可参考 https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/media/avcodec/avcodec-kit-intro.md
二、架构图
该图取自官网,但和框架代码具体实现有些差异。以OpenHarmony-4.0-Release为例,1、目前只有视频编解码实例和编解码能力列表实例位于系统服务进程av_codec_service,解封装实例、封装实例、音频编解码实例都和应用在同一进程中;2、硬件编解码服务层和硬件编解码器HDI实现默认在同一进程(通过passthrough方式通信),可通过设置 param set hcodec.usePassthrough false 使用IPC通信,av_codec_service跨进程与codec_host 通信。
三、仓库目录结构
版本:OpenHarmony-4.0-Release,修正官网一些错误目录
/foundation/multimedia/av_codec # av_codec部件业务代码
├── BUILD.gn # 编译入口
├── bundle.json # 部件描述文件
├── frameworks # 部件无独立进程框架代码的实现
│ └── native # native c++实现
├── interfaces # 外部接口层
│ ├── inner_api # 系统内部件接口
│ └── kits # 应用接口
├── sa_profile # 部件配置
├── services # 服务实现代码
│ ├── dfx # dfx代码
│ ├── engine # 功能实现
│ │ ├── base # 功能基类
│ │ ├── codec # 编解码功能实现
│ │ ├── codeclist # 编解码能力查询功能实现
│ │ ├── common # 功能实现公共库
│ │ ├── demuxer # 解封装功能实现
│ │ ├── factory # 功能实现工厂库
│ │ ├── muxer # 封装功能实现
│ │ ├── plugin # 插件实现
│ │ └── source # 媒体资源读取功能实现
│ ├── etc # 部件进程配置
│ ├── include # 服务对外头文件
│ ├── services # 服务IPC实现
│ │ ├── codec # 编解码IPC实现
│ │ ├── codeclist # 编解码能力查询IPC实现
│ │ ├── common # 服务IPC实现公共库
│ │ ├── factory # 服务IPC实现工厂库
│ │ ├── sa_avcodec # 部件主进程IPC实现
│ └── utils # 服务实现通用资源
└── test # 测试代码
OpenHarmony-4.1-Release及后续版本新增 /foundation/multimedia/av_codec/services/media_engine 目录,兼容AVPlayer histreamer engine的实现,大部分的功能实现(如demux、muxer、audio codec)都放到了该目录下。
四、开发指导
1、应用开发指导,可参考 https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/media/avcodec/Readme-CN.md
2、不同系统版本API可能有差异,根据当前的系统版本查看不同分支的开发指导,但目前只有OpenHarmony-4.1-Release及以上的指导说明。
3、OpenHarmony-3.2-Release版本音视频编解码使用老框架(gstreamer engine),位于 multimedia_player_framework仓库,对外API可参考/foundation/multimedia/player_framework/interfaces/kits/c 目录下文件,也可查看https://gitee.com/openharmony/docs/tree/master/zh-cn/application-dev/reference/apis-avcodec-kit ,如果API起始版本为9,则可以在3.2版本使用;
开发demo可参考 /foundation/multimedia/player_framework/ test/nativedemo/avcodecvdec。老版本音视频编解码框架实现在高版本已被废弃。
4、OpenHarmony-4.0-Release版本音视频编解码使用AVCodec新框架,对外API可参考/foundation/multimedia/av_codec/interfaces/kits/c 目录下文件,也可查看https://gitee.com/openharmony/docs/tree/master/zh-cn/application-dev/reference/apis-avcodec-kit ,如果API起始版本小于等于10,则可以在4.0版本使用;
开发demo可参考 /foundation/multimedia/av_codec/test/nativedemo。
更多推荐
所有评论(0)