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

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

3天内不再提示

OpenHarmony3.1媒体能力全景

电子发烧友开源社区 来源:HarmonyOS官方合作社区 作者:润和软件张汉孟 2022-04-25 09:27 次阅读

一、背景

在当前全民直播时代,我们每天刷着五花八门的抖音短视频,看着各式各样电视剧、电影以及随时映入眼帘的各类视频广告等等,每天有无数的视频文件被生成、播放。我们的眼球被花里胡哨的视频疯狂的冲击,或无脑搞笑、或夸张讽刺、或鸡汤淋头、或无效科普等等,与此同时我们是否也可以想一想这些个撩人的视频是怎么在我们眼前设备播放出来的??播放一个视频文件对于OpenHarmony 3.1(以下简称OH)来说自然不在话下,这篇文章将告诉你一个视频文件(本文以MP4封装格式、H264压缩格式的的视频文件为例)是怎么在OH的设备上播放出来的。

二、OpenHarmony3.1媒体能力全景

OH技术架构如下图所示,完成视频文件播放功能的是多媒体子系统。

25e33bce-c430-11ec-bce3-dac502259ad0.png

多媒体子系统框架如下图所示:

25fe2984-c430-11ec-bce3-dac502259ad0.png

OH拉起了一个叫mediaserver的服务来处理媒体事务,并且封装了接口层包括JS接口、native接口提供给APP调用,mediaserver的核心则是引入了gstreamer(以下简称gst)框架来完成媒体功能。gstreamer是一套功能强大、兼容性好、结构清晰的开源媒体框架,这里不做赘述,后面有专文解析。OH也在gst的基础上开发了player engine来实现播放,同时也利用的gst丰富的插件资源实现几乎所有的媒体功能,当前已移植进来的开源插件包括file source、demuxer、video decoder、libav插件等等,当然也包括OH自研的video sink、memsink、Codec hdi插件等等。

三、H264视频播放道路

大象装进冰箱分几步,我们来看视频播放流程:

2632fe5c-c430-11ec-bce3-dac502259ad0.png

播放一个视频大致分为4步:
解协议->解封装->解压缩->送显
播放pipeline

根据视频播放的步骤,我们在OH上每一个环节都能找到对应的插件来完成:

1、对于一个本地视频文件(比如uri=file:///data/h264-640x480.mp4),对应的filesrc插件来完成文件的解析,拿到MP4文件流;

2、拿到MP4文件流后,对应的qtdemux插件来解封装,完成音视频分流,输出H264裸码流和音频流;

3、拿到H264码流后,h264parse插件开始切片,输出H264帧数据;

4、处理H264帧数据,就由avdec_h264插件来完成,一般情况会输出NV12的像素数据,当然这个解码器是基于ffmpeg的软解插件,相信不久各个芯片厂商的硬件加速解码器都会加进来;

5、至此解码的工作已经完成,后面就要根据显示的像素格式、size来对解码输出数据进行后处理(转换、缩放、裁剪等),会有Converter、Scaler、Clip插件来完成;

6、满足显示要求后就会使用suRFacesink插件完成送显。

再加上audio的插件解码出音频数据,OH的player会完成音视频同步,至此一个视频文件就会播放显示在屏幕上。

在OH为了更好的用户体验,同时也引入了一些解决性能问题的插件,比如multiqueue插件来实现buffer队列,也使用decodebin高级插件来完成解码element的选择。

最终我们可以梳理出来一条播放的pipeline:

265fbb72-c430-11ec-bce3-dac502259ad0.png

通过播放OH自带的图库播放本地H264视频,抓取log,搜索OnElementSetuPCB关键字也可以得到播放的pipeline,也进一步验证了本文的分析。

2687020e-c430-11ec-bce3-dac502259ad0.png

我们也可以使用gst-launch手动创建pipeline来验证:

gst-launch --gst-plugin-path=/system/lib/media/plugins filesrc location=/data/media/h264.mp4 ! qtdemux ! h264parse ! avdec_h264 ! videoconvert ! videoscale ! video/x-raw,width=640,height=480 ! surfacememsink

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 视频
    +关注

    关注

    6

    文章

    1949

    浏览量

    72970
  • 开源
    +关注

    关注

    3

    文章

    3368

    浏览量

    42567
  • OpenHarmony
    +关注

    关注

    25

    文章

    3728

    浏览量

    16395
  • 润和软件
    +关注

    关注

    1

    文章

    275

    浏览量

    886

原文标题:OpenHarmony 3.1 H264 视频播放之路

文章出处:【微信号:HarmonyOS_Community,微信公众号:电子发烧友开源社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    芯海科技系列OpenHarmony3.1芯片支持智慧生态构建

    随着OpenHarmony3.1的正式发布,芯海科技作为OpenHarmony生态的重要参与者,及时推出了两款与系统适配的新品:健康测量CS1262芯片和无线连接CST85F01模组,为智慧生态的构建贡献了芯海力量。
    的头像 发表于 12-17 17:25 181次阅读
    芯海科技系列<b class='flag-5'>OpenHarmony3.1</b>芯片支持智慧生态构建

    50万奖金池!开放原子大赛——第二届OpenHarmony创新应用挑战赛正式启动

    第二届OpenHarmony创新应用挑战赛作为开放原子大赛旗下的重要赛项,聚焦 OpenHarmony应用开发,致力提升开发者的动手实践能力与开发创新应用的能力。 赛项要求开发者
    发表于 10-24 15:40

    基于ArkTS语言的OpenHarmony APP应用开发:多媒体管理2

    1、程序介绍本示例展示了视频组件的基本功能,以及如何控制播放状态的相关能力。包括视频组件化,全屏化,窗口化,上下轮播视频等。本实例使用Video组件,具体如下:进入首页点击播放按键。点击视频播放按钮
    的头像 发表于 09-21 08:06 351次阅读
    基于ArkTS语言的<b class='flag-5'>OpenHarmony</b> APP应用开发:多<b class='flag-5'>媒体</b>管理2

    基于ArkTS语言的OpenHarmony APP应用开发:多媒体管理2

    1、程序介绍 本示例展示了视频组件的基本功能,以及如何控制播放状态的相关能力。包括视频组件化,全屏化,窗口化,上下轮播视频等。 本实例使用Video组件,具体如下: 进入首页点击播放按键。 点击视频
    发表于 09-20 13:47

    基于ArkTS语言的OpenHarmony APP应用开发:HelloOpenharmony

    1、程序简介该程序是基于OpenHarmony标准系统编写的UI应用类:HelloOpenHarmony。本案例是基于API9接口开发。本案例已在OpenHarmony凌蒙派-RK3568开发
    的头像 发表于 09-15 08:09 414次阅读
    基于ArkTS语言的<b class='flag-5'>OpenHarmony</b> APP应用开发:Hello<b class='flag-5'>Openharmony</b>

    OpenHarmony 3.1版本中,润和hispark hi3861智能家居套件I2C驱动OLED屏幕的驱动如何改写?

    目前找到的例程都是基于OpenHarmony1.0或者2.0的,目前使用OpenHarmony3.1.4 release版本的系统后,ssd1306 OLED屏幕的例程和代码已经调不通了,请问如何解
    发表于 07-11 16:45

    康佳电视携手华为,展示基于OpenHarmony的鸿鹄媒体创新方案

    在科技日新月异的今天,电视作为家庭娱乐的中心,正经历着前所未有的变革。6月24日,华为开发者大会上一项引人瞩目的创新技术吸引了众多目光——康佳电视展示的基于OpenHarmony Standard层级的鸿鹄媒体创新方案,标志着智能电视领域迈入了新的发展阶段。
    的头像 发表于 06-24 17:17 1822次阅读

    OpenHarmony南向开发实例:【游戏手柄】

    基于TS扩展的声明式开发范式编程语言,以及OpenHarmony的分布式能力实现的一个手柄游戏。
    的头像 发表于 04-17 10:21 774次阅读
    <b class='flag-5'>OpenHarmony</b>南向开发实例:【游戏手柄】

    万里红入选《网络安全行业全景图(第十一版)》六大一级类别

    近日,国内网络安全权威媒体安全牛正式发布《网络安全行业全景图(第十一版)》(以下简称“全景图”)。
    的头像 发表于 04-16 10:52 565次阅读
    万里红入选《网络安全行业<b class='flag-5'>全景</b>图(第十一版)》六大一级类别

    OpenHarmony南向开发案例:【分布式画板】

    使用OpenHarmony3.1-Release开发的应用。通过OpenHarmony的分布式技术,使多人能够一起画画。
    的头像 发表于 04-12 14:40 1053次阅读
    <b class='flag-5'>OpenHarmony</b>南向开发案例:【分布式画板】

    OpenHarmony南向能力征集令

    1、适配过程中缺少哪些接口能力或者南向能力,需要OpenHarmony去补齐的?例如内核、编译、器件适配、单板适配等; 2、对标linux,需要OpenHarmony提供哪些
    发表于 04-09 15:32

    知语云全景监测技术:现代安全防护的全面解决方案

    大型企业、政府机构还是个人用户,都可以通过该技术有效提升安全防护能力。例如,在企业内部网络中部署知语云全景监测技术,可以实时监测员工行为、网络攻击等情况,有效防止数据泄露和非法入侵;在政府机构中,该技术
    发表于 02-23 16:40

    无人机全景监测:空域管理的新革命

    。这种实时监测和快速响应的能力,大大提高了空域管理的效率和安全性。 全面覆盖与高精度数据:无人机全景监测能够实现对空域的全面覆盖,不留死角。同时,高清摄像头和传感器能够获取高精度的影像数据,为管理者
    发表于 02-20 15:23

    浅谈兼容 OpenHarmony 的 Flutter

    OpenHarmony SIG 组织在 Gitee 开源了兼容 OpenHarmony 的 Flutter。该组织主要用于孵化 OpenHarmony 相关的开源生态项目。     ▲ 仓库地址
    的头像 发表于 02-02 15:22 626次阅读
    浅谈兼容 <b class='flag-5'>OpenHarmony</b> 的 Flutter

    震撼发布!知语云智能科技引领革新,全景反制无人机系统破茧而出!

    了国际先进的无人机反制技术,可对各类无人机进行全面监控和有效反制,为保障公共安全和重要目标安全提供了强有力的支持。 全景反制无人机系统的最大亮点在于其全方位的监控能力。该系统通过先进的雷达和光学设备,可
    发表于 01-30 16:07