【拆·應用】是為開源鴻蒙應用開發(fā)者打造的技術(shù)分享平臺,是匯聚開發(fā)者的技術(shù)洞見與實踐經(jīng)驗、提供開發(fā)心得與創(chuàng)新成果的展示窗口。誠邀您踴躍發(fā)聲,期待您的真知灼見與技術(shù)火花!
樣例簡介
在開源鴻蒙生態(tài)建設(shè)中,多媒體能力是構(gòu)建豐富用戶體驗的核心要素。本開發(fā)樣例基于AVPlayer實現(xiàn),AvPlayer支持流媒體和本地資源解析、媒體資源解封裝、視頻解碼和渲染功能,適用于對媒體資源進行端到端播放的場景,可直接播放mp4、mkv等格式的視頻文件,為開發(fā)者提供標準化視頻功能實現(xiàn)路徑,助力構(gòu)建高性能、可定制的多媒體應用。
使用說明
操作面板喚起:首頁點擊播放按鈕,視頻開始播放;再次點擊畫面進入全屏模式點擊視頻界面,喚起視頻操作面板,再次點擊操作面板消失,如果不做任何操作,操作界面會5s自動消失。

視頻播控:點擊暫停/播放按鈕,控制視頻暫停播放。

滑動進度條:視頻跳轉(zhuǎn)到指定位置播放,在中間區(qū)域顯示時間進度。

倍速切換:可以選擇1.0、1.25、1.75、2.0進行倍速調(diào)節(jié)。

視頻切換:連接網(wǎng)絡(luò)能在本地視頻和網(wǎng)絡(luò)視頻進行切換。注意:network是網(wǎng)絡(luò)視頻,檢測到?jīng)]有連接網(wǎng)絡(luò)會退出應用。

音軌切換:點擊AudioTrack音軌列表選擇框,可以選擇音軌進行切換。

縮略圖獲取:點擊進入獲取縮略圖界面,可以獲取視頻的縮略圖。

外掛字幕:點擊Subtitle開關(guān)列表選擇框,可以切換外掛字幕是否顯示。

樣例代碼拆解
下面是各個功能模塊代碼邏輯詳細分解。樣例源碼鏈接:
https://gitcode.com/openharmony/applications_app_samples/tree/master/code/BasicFeature/Media/VideoPlay
播控模塊:包括視頻播放、暫停、定點播放、倍速播放等。
1.視頻播放
a)視頻播放窗口在CoverXComponent自定義組件中實現(xiàn)。

b) CoverXComponent中創(chuàng)建XComponent組件,并在onLoad中初始化視頻。

c) 初始化視頻中創(chuàng)建視頻播放器,并監(jiān)聽播放狀態(tài)變化。

d) 在監(jiān)聽播放狀態(tài)中,等到達prepared狀態(tài)時,調(diào)用avPlayer.play()播放視頻

2.視頻暫停
a)暫停按鈕繪制在VideoOperate組件中。

b) 使用Image組件繪制播放、暫停按鈕圖標,點擊調(diào)用視頻暫停、播放接口。

3.視頻定點播放
a) 使用Slider組件繪制視頻進度條,并設(shè)置拖動或點擊時觸發(fā)事件回調(diào)。

b) 在回調(diào)事件中,調(diào)用avPlayer.seek接口進行視頻定點播放。

4.視頻倍速設(shè)置
a)使用Button組件作為倍速選擇按鈕,點擊后打開倍速選擇彈框。

b) 通過CustomDialogController自定義彈框?qū)崿F(xiàn)倍速選擇。

c) SpeedDialog組件中通過List實現(xiàn)1.0X、1.25X、1.75X、2.0X倍速選擇。

d) List點擊事件中,設(shè)置視頻播放具體倍速。

e) 調(diào)用avPlayer.setSpeed()設(shè)備倍速。


視頻切換:設(shè)備聯(lián)網(wǎng)后,本地視頻和網(wǎng)絡(luò)視頻都可以播放。
a) 首先是Row容器組件,組件中包含列表圖標,播放的視頻名稱,和列表下拉圖標。并在點擊事件中設(shè)置isShow為true或false,控制視頻列表VideoPanel是否展示。

b) 通過VideoPanel繪制視頻列表,點擊切換視頻。

c) VideoPanel中通過List組件繪制視頻列表,包括視頻名稱、是否當前播放,點擊后調(diào)用VideoChoose切換視頻播放。

d) 如下圖所示,VideoChoose中調(diào)用videoReset,即avPlayer.reset重置視頻。


音軌切換:視頻音軌切換,即視頻有多種語言配音可進行音軌切換。
a) 通過Select組件繪制,并通過onSelect調(diào)用setAudioTrack接口設(shè)置音軌。

b) setAudioTrack中,通過deselectTrack和selectTrack進行音軌切換。

字幕展示:設(shè)備聯(lián)網(wǎng)后,點擊字幕開,在視頻下方展示外掛字幕。
a) 通過Select組件繪制,并在onSelect調(diào)用setSubtitleState打開、關(guān)閉字幕。

b) setSubtitleState中設(shè)置當前的字幕狀態(tài)。

c) 通過Text組件顯示字幕。


d) this.text是監(jiān)聽subtitleUpdate獲取的字幕內(nèi)容。

縮略圖獲取:視頻跳轉(zhuǎn)到指定位置播放,在中間區(qū)域顯示時間進度。
a) 通過createAVMetadataExtractor從媒體資源中提取元數(shù)據(jù),作為縮略圖。通過createAVImageGenerator從視頻資源中獲取指定時間的縮略圖。

結(jié)語
以上是本次樣例具體功能模塊的實現(xiàn),通過本樣例讓開發(fā)者們了解到如何使用AVPlayer開發(fā)視頻播放功能,包括創(chuàng)建AVPlayer、設(shè)置播放資源和窗口、設(shè)置播放倍速、播放控制(播放/暫停/跳轉(zhuǎn)/停止)、重置銷毀資源、字幕展示等;除此之外,開源鴻蒙也提供了豐富的基礎(chǔ)組件和其他功能模塊,依托開源特性可靈活定制底層功能,借助分布式架構(gòu)實現(xiàn) “一次開發(fā),多端部署”,大幅降低跨設(shè)備協(xié)同開發(fā)成本,一系列配套的開發(fā)工具和教程可讓開發(fā)者快速上手,歡迎更多的開發(fā)者加入到開源鴻蒙應用開發(fā)中,創(chuàng)造更多奇思妙想的應用。
-
視頻
+關(guān)注
關(guān)注
6文章
2005瀏覽量
74956 -
開源
+關(guān)注
關(guān)注
3文章
4203瀏覽量
46125 -
avplayer
+關(guān)注
關(guān)注
0文章
5瀏覽量
1049 -
鴻蒙
+關(guān)注
關(guān)注
60文章
2963瀏覽量
45883
原文標題:拆·應用丨第2期:基于開源鴻蒙的AVPlayer視頻播控開發(fā)樣例
文章出處:【微信號:gh_e4f28cfa3159,微信公眾號:OpenAtom OpenHarmony】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
基于開源鴻蒙的語音識別及語音合成應用開發(fā)樣例
鴻蒙開發(fā)-視頻播放器方案
鴻蒙5開發(fā)寶藏案例分享---在線短視頻流暢切換
鴻蒙開源全場景應用開發(fā)資料匯總
HarmonyOS音頻開發(fā)指導:使用AVPlayer開發(fā)音頻播放功能
openharmony開源社區(qū) OpenHarmony開發(fā)樣例上新了
OpenHarmony創(chuàng)意開發(fā)樣例亮相HDC2022 共創(chuàng)欣欣向榮的“開源雨林”
基于開源鴻蒙的AVPlayer視頻播控開發(fā)樣例
評論