拆·應用
【拆·應用】是為開源鴻蒙應用開發(fā)者打造的技術(shù)分享平臺,匯聚開發(fā)者的技術(shù)洞見與實踐經(jīng)驗,提供開發(fā)心得與創(chuàng)新成果的展示窗口。誠邀您踴躍發(fā)聲,期待您的真知灼見與技術(shù)火花!
樣例簡介
在開源鴻蒙生態(tài)建設中,多媒體能力是構(gòu)建豐富用戶體驗的核心要素。本開發(fā)樣例針對視頻播放場景,聚焦開源鴻蒙原生媒體框架,通過Video組件實現(xiàn)視頻資源加載、播放狀態(tài)控制及多樣化展示形態(tài)。重點演示組件化播放器封裝、全屏/窗口化動態(tài)切換、上下滑動輪播等關(guān)鍵技術(shù)方案,為開發(fā)者提供標準化視頻功能實現(xiàn)路徑,助力構(gòu)建高性能、可定制的多媒體應用。
使用說明
啟動播放:首頁點擊播放按鈕,視頻開始播放;再次點擊畫面進入全屏模式
窗口化切換:在首頁向下滑500vp后,視頻自動切換為懸浮小窗模式
輪播體驗:點擊底部導航欄"直播"入口,上下滑動瀏覽推薦視頻流
開發(fā)環(huán)境準備
下載與安裝DevEco Studio
1.前往下載中心,登錄華為賬號后下載DevEco Studio,并根據(jù)下載中心頁面工具完整性指導進行完整性校驗。
2.安裝DevEco Studio 5.1.0release版本和OpenHarmony SDK API18。
說明:SDK已嵌入DevEco Studio中,無需額外下載配置,新的IDE安裝完成后,新建一個helloworld工程檢測環(huán)境是否OK。
3.下載燒錄鏡像和燒錄工具。請參考鏈接:
https://gitee.com/openharmony/docs/blob/master/zh-cn/release-notes/OpenHarmony-v5.1.0-release.md

4.燒錄開發(fā)板,請參考鏈接:
https://gitee.com/hihope_iot/docs/blob/master/HiHope_DAYU200/docs/%E7%83%A7%E5%BD%95%E6%8C%87%E5%AF%BC%E6%96%87%E6%A1%A3.md
樣例移植
源樣例是使用DevEco Studio 3.1Beta2,基于API9開發(fā),需要移植到DevEco Studio 5.1.0 release,OpenHarmony SDK API18上。在安裝好DevEco Studio后,打開需要遷移的應用工程視頻播放樣例源碼,樣例源碼鏈接:
https://gitcode.com/openharmony/applications_app_samples/tree/master/code/BasicFeature/Media/VideoShow
在工程同步過程中會有報錯,需要修改應用工程相關(guān)配置文件。
1.打開工程后出現(xiàn)Sync failed,點擊Migrate Assistant,如圖:

a) 選擇5.1.0,再點擊Migrate。

b) 彈出提示框,點擊Migrate。

c) 再次提示Sync failed,修改build-profile.json文件。

2.修改工程目錄下build-profile.json文件。

a) 修改完之后點擊Try Again 進行同步

b) 同步完成截圖如下所示,此時就可以進行工程編譯。

3.點擊編譯按鈕進行編譯,出現(xiàn)如下報錯,根據(jù)報錯提示修改module.json。

a) 打開文件將鼠標放置在報錯處,會出現(xiàn)修改提示,如圖提示刪除uiSyntax字段。

b) 將srcEntrance改為srcEntry,icon字段中內(nèi)容修改為layered_image.json,并在資源文件夾下添加layered_image.json、backgroud.png、foreground.png文件,這些文件可以在新建工程中獲取,修改完成后點擊Sync Now。

4.代碼報錯修改,如下是幾個典型的報錯解決方案。
a) arkts-no-ctor-prop-decls錯誤。

報錯代碼示例:
class Person {
constructor(readonly name: string) {}
getName(): string {
return this.name;
}
}
應修改為:
class Person {
name: string
constructor(name: string) {
this.name = name;
}
getName(): string {
return this.name;
}
}
b) arkts-no-any-unknown錯誤,需要按照業(yè)務邏輯,將代碼中的any, unknown改為具體的類型。

報錯代碼示例:
functionprintObj(obj: any) {
console.log(obj);
}
printObj('abc');
應修改為:
functionprintObj(obj: string) {
console.log(obj);
}
printObj('abc');
c) arkts-no-var錯誤,需要將var改為let。

d) arkts-no-props-by-index錯誤。

報錯代碼示例:
import{ router }from'@kit.ArkUI';
letparams:Object= router.getParams();
letfunNum:number= params['funNum'];
lettarget:string= params['target'];
應修改為:
import{ router }from'@kit.ArkUI';
letparams = router.getParams()asRecord
letfunNum:number= params.funNumasnumber;
lettarget:string= params.targetasstring;
Video組件介紹
媒體視頻播放是該組件從API version 7開始支持,提供簡單的視頻播放、播控功能,復雜開發(fā)場景推薦使用AVPlayer播控API和XComponent組件開發(fā),本樣例中Video組件播放視頻的代碼如下: 詳細介紹請查看開源鴻蒙官網(wǎng)Video組件。
Video({
src: this.videoSrc,
controller: this.detailVideoController
})
.width('100%')
.backgroundColor(this.isHidden ? '#ffffff' : '#000000')
.aspectRatio(1.12)
.controls(this.controls)
.objectFit(ImageFit.Contain)
.onUpdate((e) => {
this.updateTime = e.time
})
.onPrepared((e) => {
console.info('onPrepared:' + e.duration)
})
.onFinish(() => {
this.isHidden = true;
this.isStart = false;
this.updateTime = 0;
})
結(jié)語
以上是本次樣例開發(fā)移植的分享,主要包括開發(fā)環(huán)境搭建、開發(fā)移植的步驟和編譯問題解決,可以讓初學者掌握開發(fā)開源鴻蒙應用的環(huán)境搭建和基本組件等知識,也讓有基礎的開發(fā)者了解到ArkTS語法規(guī)則下將TS代碼適配成ArkTS代碼的適配方法。最后,歡迎更多的開發(fā)者加入到開源鴻蒙應用開發(fā)中來。
-
開源
+關(guān)注
關(guān)注
3文章
4122瀏覽量
45764 -
視頻播放
+關(guān)注
關(guān)注
0文章
13瀏覽量
7176 -
鴻蒙
+關(guān)注
關(guān)注
60文章
2921瀏覽量
45565 -
DevEco Studio
+關(guān)注
關(guān)注
0文章
33瀏覽量
1495
原文標題:拆·應用丨基于開源鴻蒙的視頻播放開發(fā)樣例
文章出處:【微信號:gh_e4f28cfa3159,微信公眾號:OpenAtom OpenHarmony】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
基于開源鴻蒙的AVPlayer視頻播控開發(fā)樣例
基于開源鴻蒙的語音識別及語音合成應用開發(fā)樣例
鴻蒙開發(fā)-視頻播放器方案
HarmonyOS實戰(zhàn)開發(fā)-如何實現(xiàn)音頻低時延錄制和播放,AudioVivid音樂播放的相關(guān)功能
鴻蒙開源第三方組件資料合集
鴻蒙開源全場景應用開發(fā)資料匯總
基于OpenHarmony開發(fā)的demo樣例展示
基于鴻蒙適配移植的開源視頻緩存引擎項目案例
openharmony開源社區(qū) OpenHarmony開發(fā)樣例上新了
OpenHarmony創(chuàng)意開發(fā)樣例亮相HDC2022 共創(chuàng)欣欣向榮的“開源雨林”
2025開源鴻蒙開發(fā)者大會圓滿落幕
蜻蜓FM開源“SmartXPlayer”音頻播放組件,打造鴻蒙多端音頻播放新引擎
基于開源鴻蒙的視頻播放開發(fā)樣例
評論