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

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

3天内不再提示

详解OpenHarmony 3.1版本新特性

电子发烧友开源社区 来源:HarmonyOS官方合作社区 作者:HarmonyOS官方合作社 2022-04-28 09:04 次阅读

千呼万唤始出来,在OpenHarmony最新发布的3.1版本中终于支持了suRFace+videoplayer实现视频播放的功能。

1. surface+videoplayer视频播放与传统的video组件对比

大家可能觉得不是很早就支持一个video组件就可以实现视频播放吗?是的,video组件也就简简单单能做个视频播放,而你仔细去查阅下,video组件支持的api功能太少了,很多定制化功能都无法实现。下面是3.1版本上video组件所具备的api:

3a4c0dbc-c68c-11ec-bce3-dac502259ad0.png

而在3.1中添加了一个关键组件就是xcomponent,它可以设置一个type为surface,而我更关心的就是这个surface,在讲surface之前我先讲讲videoplayer。

3.1版本中同时还新增了视频播放的媒体服务videoplayer,它为我们提供了视频播放服务相关的各种api,video组件所具备的功能它全部具备,同时还具备视频首帧送显上报事件、监听视频播放宽高变化事件、监听视频缓存更新事件等等高级功能,这样就可以帮助我们自定义出非常高级的视频播放器出来了。

而videoplayer它只是个做视频播放的媒体服务,它并不能直接项video组件那样输出视频显示在显示器上,这个时候就需要借助surface了。Surface可以简单的理解为绘制时用的画布,在hml布局文件中添加一个xcomponent组件并设置type为surface,就相当于放置了一块画布。而surface在程序中可以抽象为一块内存,在js代码中xcomponent组件通过调用getXComponentSurfaceId()方法可以申请这块内存,然后就可以随意的绘制,videoplayer在完成视频的编解码服务之后,可以通过调用setdisplaySurface这个方法将视频内容输出到之前的surface内存中,从而达到最终视频在窗口上显示的功能。下图是基本架构图

3a755640-c68c-11ec-bce3-dac502259ad0.png

2. surface+videoplayer视频播放代码实现

下面只实现一个最基础的视频播放功能,首先是编写hml布局文件,代码如下:

class="container"> "Xcomponent" type='surface' onload='LoadXcomponent' style="width : 400px; height : 200px; border-color : red; border-width : 5px;">

(左右移动查看全部内容)

然后编写js文件,代码如下:

import media from '@ohos.multimedia.media'import fileIO from '@ohos.fileio'
let videoPlayer = undefined;let surfaceID = undefined; // 用于保存Xcomponent接口返回的surfaceID
export default {  data: {    title: ""  },
  onInit() {
  },  // 调用Xcomponent的接口用于获取surfaceID,并保存在surfaceID变量中,该接口由XComponent组件默认加载,非主动调用  async LoadXcomponent() {    surfaceID = this.$element('Xcomponent').getXComponentSurfaceId();    console.info('LoadXcomponent surfaceID is' + surfaceID);    // 用户选择视频设置fd(本地播放)    let fdPath = 'fd://';    // path路径的码流可通过"hdc file send D:xxx1.mp3 /data/accounts/account_0/appdata" 命令,将其推送到设备上    let path = '/data/accounts/account_0/appdata/1.mp4';    await fileIO.open(path).then(fdNumber => {      fdPath = fdPath + '' + fdNumber;      console.info('open fd sucess fd is' + fdPath);    }, err => {      console.info('open fd failed err is' + err);    });
    await media.createVideoPlayer().then((video) => {      if (typeof (video) != 'undefined') {        videoPlayer = video;        console.info('video createVideoPlayer success');      } else {        console.info('video createVideoPlayer fail');      }    }).catch((error) => {      console.info(`video catchCallback, error:${error.message}`);    });    videoPlayer.url = fdPath;    console.info('video url success');    // 设置surfaceID用于显示视频画面    await videoPlayer.setDisplaySurface(surfaceID).then(() => {      console.info('setDisplaySurface success');    }).catch((error) => {      console.info(`video catchCallback, error:${error.message}`);    });

    // 调用prepare完成播放前准备工作    await videoPlayer.prepare().then(() => {      console.info('prepare success');    }).catch((error) => {      console.info(`video catchCallback, error:${error.message}`);    });
    // 调用play开始播放    await videoPlayer.play().then(() => {      console.info('play success');    }).catch((error) => {      console.info(`video catchCallback, error:${error.message}`);    });  },}

(左右移动查看全部内容)

原文标题:OpenHarmony 3.1 新特性:surface+videoplayer 实现视频播放

文章出处:【微信公众号:HarmonyOS官方合作社区】欢迎添加关注!文章转载请注明出处。

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

    关注

    0

    文章

    192

    浏览量

    44855
  • 视频播放
    +关注

    关注

    0

    文章

    10

    浏览量

    6720
  • OpenHarmony
    +关注

    关注

    23

    文章

    3259

    浏览量

    15159

原文标题:OpenHarmony 3.1 新特性:surface+videoplayer 实现视频播放

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

收藏 人收藏

    评论

    相关推荐

    OpenHarmony 3.1 Release全面解析

    的基础上有如下变更。特性变更表3 版本新增特性表更多版本特性查看 Release Note:OpenHa
    发表于 03-31 10:36

    OpenHarmony 3.1 Release全面解析

    (Windows\Linux)3.1 Release站点SHA256校验码编译工具链获取清单-站点[/td]更新说明本版本OpenHarmony 3.1 Beta的基础上有如下变更。
    发表于 03-31 10:55

    喜大普奔!OpenHarmony 3.1特性—DAYU200能打电话了!

    年,从最初的1.0版本到2022年3月30号发布的3.1 Release版本OpenHarmony从最初的功能单一、到如今的逐步完善。我们可以看看这一张图来了解一下:可以看到,(1)
    发表于 04-04 10:52

    【技术圆桌】OpenHarmony 3.1 Release 版本讲解会

    OpenHarmony前世今生2. 重要特性演进方向标3. 重点芯片适配4. 案例分享:3.1 Release版本体验直播的时间暂定4月8日下午,大家可以提前报名,如有变动会通知大家
    发表于 04-06 14:03

    【技术圆桌】OpenHarmony 3.1 Release 版本讲解会

    ,记得备注“讲解会”哦大家对于OpenHarmony 3.1 Release 版本有什么问题可以在贴留言,我们将会邀请老师为大家一一解答,此外提问即可获得5积分哦~连志安发烧友主页:
    发表于 04-08 15:47

    【直播回顾】OpenHarmony 3.1 Release版本南北向关键能力解读

    OpenHarmony 3.1 Release版本发布后,广大开发者们纷纷开始上手体验新版本的功能。但随之而来的一系列问题,摆在了大家的面前:Ope
    发表于 04-15 16:12

    OpenHarmony技术日全面解读3.1 Release版本,系统基础能力再升级

    4 月 25 日,OpenAtom OpenHarmony(以下简称“OpenHarmony”)技术日在深圳举办,对 OpenHarmony 3.1 Release
    发表于 04-27 10:15

    OpenHarmony 3.1 Release 版本概述

    HUAWEI DevEco Studio加载NA编译工具链获取清单-站点-更新说明本版本OpenHarmony 3.1 Beta的基础上有如下变更。特性变更表3
    发表于 05-11 19:18

    HUAWEI DevEco Studio 3.1版本发布,配套ArkTS声明式开发全面升级

    今年开发者大会发布了HarmonyOS应用开发套件DevEco Studio 3.1版本,展示了DevEco Studio 3.1版本的关键特性
    发表于 11-17 11:52

    OpenHarmony 3.1 Release版本介绍

    OpenHarmony 3.1 Release Harmony最新版已经发布,同步发布了 DevEco Device Tool 3.0 Release 一站式开发工具。
    的头像 发表于 04-12 09:12 1629次阅读

    全新的OpenHarmony 3.1 Release版本

    OpenHarmony 3.1 Release 版本首次支持复杂标准带屏设备以及复杂 UI 类应用开发,在内核层、系统服务层、框架层以及开发资源 & 工具链方面,实现基础能力再升级,标志着 O
    的头像 发表于 04-28 09:23 1125次阅读

    OpenHarmony 3.1 Release版本分布式技术独具特色

    4月,OpenAtom OpenHarmony(以下简称“OpenHarmony”)技术日在深圳举办,对 OpenHarmony 3.1 Release
    的头像 发表于 04-28 10:39 4941次阅读

    基于OpenHarmony 3.1 LTS版本实现手机基本功能,HiHopeOS 将全面支持手机类产品

    体验,支持接打电话、收发短信、收发邮件(蜂窝网络)、即时通讯(蜂窝网络)等,支持最新的OpenHarmony3.1Release版本能力特性,集成电话、短信、浏览器、
    的头像 发表于 05-31 11:07 410次阅读
    基于<b class='flag-5'>OpenHarmony</b> <b class='flag-5'>3.1</b> LTS<b class='flag-5'>版本</b>实现手机基本功能,HiHopeOS 将全面支持手机类产品

    【每周推荐】OpenHarmony 3.1特性使用,多款OpenHarmony开发板快速上手教程

    各位工程师好!今天论坛助理为大家准备了HarmonyOS及开发相关的电子发烧友推荐每日好帖,欢迎各位留言点评讨论~1、喜大普奔!OpenHarmony3.1特性—DAYU200能打电话了!推荐理由
    的头像 发表于 04-11 15:03 657次阅读
    【每周推荐】<b class='flag-5'>OpenHarmony</b> <b class='flag-5'>3.1</b>新<b class='flag-5'>特性</b>使用,多款<b class='flag-5'>OpenHarmony</b>开发板快速上手教程

    喜大普奔!DAYU200能打电话了—OpenHarmony 3.1特性

    OpenHarmony3.1Release已于3月31号发布,目前DAYU200是首款支持OpenHarmony3.1Release版本的开发套件。DAYU200现已面向行业和开发者全面供货,欢迎
    的头像 发表于 04-22 11:43 773次阅读
    喜大普奔!DAYU200能打电话了—<b class='flag-5'>OpenHarmony</b> <b class='flag-5'>3.1</b>新<b class='flag-5'>特性</b>!