当前位置: 首页 > news >正文

【开源鸿蒙-AVCodec Kit】音视频编解码封装解封装部件介绍,转自开源鸿蒙官媒OpenAtom OpenHarmony

是否有探索开源鸿蒙音视频编解码技术的欲望?是否对开源鸿蒙音视频编解码格式支持有诉求?别急——今天这份开源鸿蒙AVCodec Kit介绍文章,就是解答疑惑的指南!参考这份指南,可以使用开源鸿蒙的音视频编解码能力,进行应用开发;也可以参与共建,让开源鸿蒙音视频编解码更加完善!

一、概述

AVCodec Kit(Audio & Video Codec Kit,音视频编解码,封装解析)是媒体系统中的音视频的编解码、媒体文件的解析、封装、媒体数据输入等原子能力。 基于性能考虑,AVCodec Kit仅提供C接口。

1.1  功能模块

图片

1.2 简易架构图

图片

二、亮点/特征

2.1系统内部数据零拷贝

在视频解码过程,AVCodec通过回调函数提供AVBuffer给应用,由应用将要解码的sample数据写入AVBuffer,在AVCodec中数据不再需要从内存拷入硬件解码器,而是直接送入解码器解码,实现系统内数据零拷贝。

2.2视频编码、解码支持硬件加速

支持H.264、H.265、H.265 10bit的硬件编解码。

三、AVCodec Kit三大功能模块简介 

3.1音频编解码

3.1.1功能简介

音频编码的输入和音频解码的输出为PCM格式。

3.1.2流程图

图片

3.1.3流程说明

  • 在编码过程中,采集模块将PCM数据通过回调函数通知应用数据处理的情况。

  • 完成一帧编码,输出编码结果AVBuffer。

  • 在解码过程通过回调通知应用输入一帧码流到解码器解码,当解码完成也会通过回调通知应用解码完成。

  • 应用可以对数据做后续处理。

3.2视频编解码

3.2.1功能简介

视频编码的输入和视频解码的输出支持Surface模式。

3.2.2流程图

图片

3.2.3流程说明

  • 在编码过程中,将surface数据通过回调函数通知应用数据处理的情况。

  • 完成一帧编码,输出编码结果AVBuffer。

  • 在解码过程通过回调通知应用输入一帧码流到解码器解码。

  • 当解码完成也会通过回调通知应用解码完成,应用可以对数据做后续处理。

3.3媒体文件封装解封装

3.3.1功能简介

将编码后的音视频数据封装为媒体文件,将媒体文件解析为音视频数据。

3.3.2流程图

图片

3.3.3流程说明

  • 在文件封装环节,应用将AVBuffer送入Codec对应的接口,执行数据封装。

  • AVBuffer可以是由上述编码输出的AVBuffer,也可以是应用创建的AVBuffer,AVBuffer中要携带有效的码流数据和相关的时间描述等信息。

  • 在文件解封装环节,应用从Codec对应的接口获得携带有码流数据的AVBuffer,该AVBuffer可以送入上述视频和音频编解码对应接口。

四、参考资料 

4.1音频编码指南

https://docs.openharmony.cn/pages/v5.1/zh-cn/application-dev/media/avcodec/audio-decoding.md

4.2音频解码指南

https://docs.openharmony.cn/pages/v5.1/zh-cn/application-dev/media/avcodec/audio-encoding.md

4.3视频编码Surface模式

https://docs.openharmony.cn/pages/v5.1/zh-cn/application-dev/media/avcodec/video-encoding.md#surface%E6%A8%A1%E5%BC%8F

4.4视频解码Surface模式

https://docs.openharmony.cn/pages/v5.1/zh-cn/application-dev/media/avcodec/video-decoding.md#surface%E6%A8%A1%E5%BC%8F

4.5媒体数据解封装

https://docs.openharmony.cn/pages/v5.1/zh-cn/application-dev/media/avcodec/audio-video-demuxer.md

4.6媒体数据封装

https://docs.openharmony.cn/pages/v5.1/zh-cn/application-dev/media/avcodec/audio-video-muxer.md

4.7相关代码仓

https://gitcode.com/openharmony/multimedia_av_codec

https://gitcode.com/openharmony/multimedia_media_foundation

https://gitcode.com/openharmony/third_party_ffmpeg

五、结语

AVCodec Kit使得应用能够直接调用系统提供的编解码、封装、解封装能力实现音视频的播放、录制、编码等功能。AVCodec Kit既是开发助手,也是技术展现的大舞台!欢迎加入开源鸿蒙音视频格式解码解封装共建,我们在开源鸿蒙开发者视频号进行了音视频解码解封装的共建赋能,欢迎开发者跟随直播或查看回放来了解相关知识,一起参与开源鸿蒙生态建设,共建更开放、更智能的未来世界。

供稿:教育工作组 庄文琪、刘丽红

责编:开发者与活动运营组 周程威

编审:品牌管理组 丽娜

审核:开源鸿蒙工作委员会执行总监 陶铭

               开源鸿蒙工作委员会执行秘书 曹云菲 

http://www.dtcms.com/a/553181.html

相关文章:

  • 【保姆级教程】MySQL 5.7 彻底卸载与重新安装全流程(附常见问题解决)
  • Debian 安装 Domain Admin
  • Java Maven+lombok+MySql+HikariCP 操作数据库
  • Golang 镜像拉取与 Docker 部署全教程
  • 纯css:一个好玩的按钮边框动态动画
  • html5网站建设基本流程图更改wordpress标签分割符合
  • 山东中讯网站建设专业外贸网站制作价格
  • harbor-从源码理解镜像清理的逻辑实现
  • 为什么安装epel-release
  • Apache Maven 项目的开发指南
  • NET系列算法
  • 基于可视化天气系统demo,基于python+ matplotlib+request爬虫,开发语言python,数据库无,10个可视化界面,需要的可以了联系。
  • 被网站开发公司坑湖北网站设计
  • 可视化视角:AI + 实时流 + 可访问性时代的 3 大改变
  • Rust `std::iter` 深度解析:`Iterator` Trait、适配器与性能
  • MacOS学习笔记
  • 搭建网站程序网站域名和服务器到期
  • 从零开发一款实用插件,掌握VSCode扩展生态核心技术
  • mapbox高阶,使用自定义图层实现雷达扫描效果
  • 上海网站空间租用WordPress渗透思路
  • 邦邦汽服x优湃能源汽车零部件绿色循环中心揭牌暨中保智修新能源技术中心授牌仪式圆满举行
  • 蓝牙钥匙 第30次 蓝牙钥匙在汽车共享与分时租赁场景中的技术创新与实践
  • 百度AI眼镜Pro预售启幕,Snap/微美全息AR眼镜技术领跑掌握市场主动权
  • 阿里通义千问推理优化上下文缓存之隐式缓存和显式缓存
  • 南宁网站建设产品介绍做效果图挣钱的网站
  • 【Linux系统编程】调试器-gdb/cgdb
  • 【JUnit实战3_20】第十一章:用 Gradle 运行 JUnit 测试实战
  • TouchDIVER Pro 触觉手套:Weart把火星岩石触感、手术操作感搬进 XR
  • 极不均匀电场的强垂直分量和弱垂直分量
  • 直播卡顿?会议割裂?视频直播点播平台EasyDSS全新升级,一平台终结音视频“老大难”!