0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

詳解OpenHarmony 3.1版本新特性

電子發(fā)燒友開源社區(qū) ? 來源:HarmonyOS官方合作社區(qū) ? 作者:HarmonyOS官方合作社 ? 2022-04-28 09:04 ? 次閱讀

千呼萬喚始出來,在OpenHarmony最新發(fā)布的3.1版本中終于支持了suRFace+videoplayer實(shí)現(xiàn)視頻播放的功能。

1. surface+videoplayer視頻播放與傳統(tǒng)的video組件對(duì)比

大家可能覺得不是很早就支持一個(gè)video組件就可以實(shí)現(xiàn)視頻播放嗎?是的,video組件也就簡(jiǎn)簡(jiǎn)單單能做個(gè)視頻播放,而你仔細(xì)去查閱下,video組件支持的api功能太少了,很多定制化功能都無法實(shí)現(xiàn)。下面是3.1版本上video組件所具備的api:

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

而在3.1中添加了一個(gè)關(guān)鍵組件就是xcomponent,它可以設(shè)置一個(gè)type為surface,而我更關(guān)心的就是這個(gè)surface,在講surface之前我先講講videoplayer。

3.1版本中同時(shí)還新增了視頻播放的媒體服務(wù)videoplayer,它為我們提供了視頻播放服務(wù)相關(guān)的各種api,video組件所具備的功能它全部具備,同時(shí)還具備視頻首幀送顯上報(bào)事件、監(jiān)聽視頻播放寬高變化事件、監(jiān)聽視頻緩存更新事件等等高級(jí)功能,這樣就可以幫助我們自定義出非常高級(jí)的視頻播放器出來了。

而videoplayer它只是個(gè)做視頻播放的媒體服務(wù),它并不能直接項(xiàng)video組件那樣輸出視頻顯示在顯示器上,這個(gè)時(shí)候就需要借助surface了。Surface可以簡(jiǎn)單的理解為繪制時(shí)用的畫布,在hml布局文件中添加一個(gè)xcomponent組件并設(shè)置type為surface,就相當(dāng)于放置了一塊畫布。而surface在程序中可以抽象為一塊內(nèi)存,在js代碼中xcomponent組件通過調(diào)用getXComponentSurfaceId()方法可以申請(qǐng)這塊內(nèi)存,然后就可以隨意的繪制,videoplayer在完成視頻的編解碼服務(wù)之后,可以通過調(diào)用setdisplaySurface這個(gè)方法將視頻內(nèi)容輸出到之前的surface內(nèi)存中,從而達(dá)到最終視頻在窗口上顯示的功能。下圖是基本架構(gòu)圖

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

2. surface+videoplayer視頻播放代碼實(shí)現(xiàn)

下面只實(shí)現(xiàn)一個(gè)最基礎(chǔ)的視頻播放功能,首先是編寫hml布局文件,代碼如下:

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

(左右移動(dòng)查看全部?jī)?nèi)容)

然后編寫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() {
  },  // 調(diào)用Xcomponent的接口用于獲取surfaceID,并保存在surfaceID變量中,該接口由XComponent組件默認(rèn)加載,非主動(dòng)調(diào)用  async LoadXcomponent() {    surfaceID = this.$element('Xcomponent').getXComponentSurfaceId();    console.info('LoadXcomponent surfaceID is' + surfaceID);    // 用戶選擇視頻設(shè)置fd(本地播放)    let fdPath = 'fd://';    // path路徑的碼流可通過"hdc file send D:xxx1.mp3 /data/accounts/account_0/appdata" 命令,將其推送到設(shè)備上    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');    // 設(shè)置surfaceID用于顯示視頻畫面    await videoPlayer.setDisplaySurface(surfaceID).then(() => {      console.info('setDisplaySurface success');    }).catch((error) => {      console.info(`video catchCallback, error:${error.message}`);    });

    // 調(diào)用prepare完成播放前準(zhǔn)備工作    await videoPlayer.prepare().then(() => {      console.info('prepare success');    }).catch((error) => {      console.info(`video catchCallback, error:${error.message}`);    });
    // 調(diào)用play開始播放    await videoPlayer.play().then(() => {      console.info('play success');    }).catch((error) => {      console.info(`video catchCallback, error:${error.message}`);    });  },}

(左右移動(dòng)查看全部?jī)?nèi)容)

原文標(biāo)題:OpenHarmony 3.1 新特性:surface+videoplayer 實(shí)現(xiàn)視頻播放

文章出處:【微信公眾號(hào):HarmonyOS官方合作社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Video
    +關(guān)注

    關(guān)注

    0

    文章

    195

    瀏覽量

    45190
  • 視頻播放
    +關(guān)注

    關(guān)注

    0

    文章

    10

    瀏覽量

    6776
  • OpenHarmony
    +關(guān)注

    關(guān)注

    25

    文章

    3722

    瀏覽量

    16321

原文標(biāo)題:OpenHarmony 3.1 新特性:surface+videoplayer 實(shí)現(xiàn)視頻播放

文章出處:【微信號(hào):HarmonyOS_Community,微信公眾號(hào):電子發(fā)燒友開源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    OpenHarmony 3.1 Release全面解析

    的基礎(chǔ)上有如下變更。特性變更表3 版本新增特性表更多版本特性查看 Release Note:OpenHa
    發(fā)表于 03-31 10:36

    OpenHarmony 3.1 Release全面解析

    (Windows\Linux)3.1 Release站點(diǎn)SHA256校驗(yàn)碼編譯工具鏈獲取清單-站點(diǎn)[/td]更新說明本版本OpenHarmony 3.1 Beta的基礎(chǔ)上有如下變更。
    發(fā)表于 03-31 10:55

    喜大普奔!OpenHarmony 3.1特性—DAYU200能打電話了!

    年,從最初的1.0版本到2022年3月30號(hào)發(fā)布的3.1 Release版本。OpenHarmony從最初的功能單一、到如今的逐步完善。我們可以看看這一張圖來了解一下:可以看到,(1)
    發(fā)表于 04-04 10:52

    【技術(shù)圓桌】OpenHarmony 3.1 Release 版本講解會(huì)

    OpenHarmony前世今生2. 重要特性演進(jìn)方向標(biāo)3. 重點(diǎn)芯片適配4. 案例分享:3.1 Release版本體驗(yàn)直播的時(shí)間暫定4月8日下午,大家可以提前報(bào)名,如有變動(dòng)會(huì)通知大家
    發(fā)表于 04-06 14:03

    【技術(shù)圓桌】OpenHarmony 3.1 Release 版本講解會(huì)

    ,記得備注“講解會(huì)”哦大家對(duì)于OpenHarmony 3.1 Release 版本有什么問題可以在貼留言,我們將會(huì)邀請(qǐng)老師為大家一一解答,此外提問即可獲得5積分哦~連志安發(fā)燒友主頁:
    發(fā)表于 04-08 15:47

    【直播回顧】OpenHarmony 3.1 Release版本南北向關(guān)鍵能力解讀

    OpenHarmony 3.1 Release版本發(fā)布后,廣大開發(fā)者們紛紛開始上手體驗(yàn)新版本的功能。但隨之而來的一系列問題,擺在了大家的面前:Ope
    發(fā)表于 04-15 16:12

    OpenHarmony技術(shù)日全面解讀3.1 Release版本,系統(tǒng)基礎(chǔ)能力再升級(jí)

    4 月 25 日,OpenAtom OpenHarmony(以下簡(jiǎn)稱“OpenHarmony”)技術(shù)日在深圳舉辦,對(duì) OpenHarmony 3.1 Release
    發(fā)表于 04-27 10:15

    OpenHarmony 3.1 Release 版本概述

    HUAWEI DevEco Studio加載NA編譯工具鏈獲取清單-站點(diǎn)-更新說明本版本OpenHarmony 3.1 Beta的基礎(chǔ)上有如下變更。特性變更表3
    發(fā)表于 05-11 19:18

    HUAWEI DevEco Studio 3.1版本發(fā)布,配套ArkTS聲明式開發(fā)全面升級(jí)

    今年開發(fā)者大會(huì)發(fā)布了HarmonyOS應(yīng)用開發(fā)套件DevEco Studio 3.1版本,展示了DevEco Studio 3.1版本的關(guān)鍵特性
    發(fā)表于 11-17 11:52

    OpenHarmony 3.1 Release版本介紹

    OpenHarmony 3.1 Release Harmony最新版已經(jīng)發(fā)布,同步發(fā)布了 DevEco Device Tool 3.0 Release 一站式開發(fā)工具。
    的頭像 發(fā)表于 04-12 09:12 ?2069次閱讀

    DAYU200開發(fā)版升級(jí)openHarmony3.1 release版本

    今天收到了來自潤(rùn)和的DAYU200的開發(fā)板,我們?cè)陂_機(jī)之后,查看關(guān)于手機(jī),這一欄,發(fā)現(xiàn)openharmony版本3.1的beta版,于是我們先做個(gè)升級(jí),然后進(jìn)行更多的體驗(yàn),
    的頭像 發(fā)表于 04-16 09:37 ?2065次閱讀
    DAYU200開發(fā)版升級(jí)<b class='flag-5'>openHarmony3.1</b> release<b class='flag-5'>版本</b>

    全新的OpenHarmony 3.1 Release版本

    OpenHarmony 3.1 Release 版本首次支持復(fù)雜標(biāo)準(zhǔn)帶屏設(shè)備以及復(fù)雜 UI 類應(yīng)用開發(fā),在內(nèi)核層、系統(tǒng)服務(wù)層、框架層以及開發(fā)資源 & 工具鏈方面,實(shí)現(xiàn)基礎(chǔ)能力再升級(jí),標(biāo)志著 O
    的頭像 發(fā)表于 04-28 09:23 ?1375次閱讀

    OpenHarmony 3.1 Release版本分布式技術(shù)獨(dú)具特色

    4月,OpenAtom OpenHarmony(以下簡(jiǎn)稱“OpenHarmony”)技術(shù)日在深圳舉辦,對(duì) OpenHarmony 3.1 Release
    的頭像 發(fā)表于 04-28 10:39 ?5209次閱讀

    基于OpenHarmony 3.1 LTS版本實(shí)現(xiàn)手機(jī)基本功能,HiHopeOS 將全面支持手機(jī)類產(chǎn)品

    體驗(yàn),支持接打電話、收發(fā)短信、收發(fā)郵件(蜂窩網(wǎng)絡(luò))、即時(shí)通訊(蜂窩網(wǎng)絡(luò))等,支持最新的OpenHarmony3.1Release版本能力特性,集成電話、短信、瀏覽器、
    的頭像 發(fā)表于 05-31 11:07 ?721次閱讀
    基于<b class='flag-5'>OpenHarmony</b> <b class='flag-5'>3.1</b> LTS<b class='flag-5'>版本</b>實(shí)現(xiàn)手機(jī)基本功能,HiHopeOS 將全面支持手機(jī)類產(chǎn)品

    【每周推薦】OpenHarmony 3.1特性使用,多款OpenHarmony開發(fā)板快速上手教程

    OpenHarmony3.1Release已經(jīng)在3月30號(hào)正式發(fā)布,目前DAYU200是唯一一款支持3.1版本的開發(fā)板。我也是第一時(shí)間從潤(rùn)和軟件那邊拿到一塊板子
    的頭像 發(fā)表于 04-11 15:03 ?965次閱讀
    【每周推薦】<b class='flag-5'>OpenHarmony</b> <b class='flag-5'>3.1</b>新<b class='flag-5'>特性</b>使用,多款<b class='flag-5'>OpenHarmony</b>開發(fā)板快速上手教程