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

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

滑動進度條:視頻跳轉到指定位置播放,在中間區域顯示時間進度。

倍速切換:可以選擇1.0、1.25、1.75、2.0進行倍速調節。

視頻切換:連接網絡能在本地視頻和網絡視頻進行切換。注意:network是網絡視頻,檢測到沒有連接網絡會退出應用。

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

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

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

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

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

c) 初始化視頻中創建視頻播放器,并監聽播放狀態變化。

d) 在監聽播放狀態中,等到達prepared狀態時,調用avPlayer.play()播放視頻

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

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

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

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

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

b) 通過CustomDialogController自定義彈框實現倍速選擇。

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

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

e) 調用avPlayer.setSpeed()設備倍速。


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

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

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

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


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

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

字幕展示:設備聯網后,點擊字幕開,在視頻下方展示外掛字幕。
a) 通過Select組件繪制,并在onSelect調用setSubtitleState打開、關閉字幕。

b) setSubtitleState中設置當前的字幕狀態。

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


d) this.text是監聽subtitleUpdate獲取的字幕內容。

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

結語
以上是本次樣例具體功能模塊的實現,通過本樣例讓開發者們了解到如何使用AVPlayer開發視頻播放功能,包括創建AVPlayer、設置播放資源和窗口、設置播放倍速、播放控制(播放/暫停/跳轉/停止)、重置銷毀資源、字幕展示等;除此之外,開源鴻蒙也提供了豐富的基礎組件和其他功能模塊,依托開源特性可靈活定制底層功能,借助分布式架構實現 “一次開發,多端部署”,大幅降低跨設備協同開發成本,一系列配套的開發工具和教程可讓開發者快速上手,歡迎更多的開發者加入到開源鴻蒙應用開發中,創造更多奇思妙想的應用。
-
視頻
+關注
關注
6文章
2006瀏覽量
75036 -
開源
+關注
關注
3文章
4267瀏覽量
46326 -
avplayer
+關注
關注
0文章
5瀏覽量
1059 -
鴻蒙
+關注
關注
60文章
2991瀏覽量
46078
原文標題:拆·應用丨第2期:基于開源鴻蒙的AVPlayer視頻播控開發樣例
文章出處:【微信號:gh_e4f28cfa3159,微信公眾號:OpenAtom OpenHarmony】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
基于開源鴻蒙的AVPlayer視頻播控開發樣例
評論