一、简介

AVCodec模块为OpenHarmony系统提供了统一的音视频编解码、媒体文件的封装、解封装、媒体数据输入等能力,使得应用能够直接调用系统提供的编解码、封装、解封装API实现音视频的播放、录制、编码等功能。
可参考 https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/media/avcodec/avcodec-kit-intro.md

二、架构图

img

该图取自官网,但和框架代码具体实现有些差异。以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。

Logo

社区规范:仅讨论OpenHarmony相关问题。

更多推荐