【拆·應(yīng)用】是為開源鴻蒙應(yīng)用開發(fā)者打造的技術(shù)分享平臺(tái),是匯聚開發(fā)者的技術(shù)洞見與實(shí)踐經(jīng)驗(yàn)、提供開發(fā)心得與創(chuàng)新成果的展示窗口。誠(chéng)邀您踴躍發(fā)聲,期待您的真知灼見與技術(shù)火花!
樣例簡(jiǎn)介
在開源鴻蒙生態(tài)建設(shè)中,多媒體能力是構(gòu)建豐富用戶體驗(yàn)的核心要素。本開發(fā)樣例基于AVPlayer實(shí)現(xiàn),AvPlayer支持流媒體和本地資源解析、媒體資源解封裝、視頻解碼和渲染功能,適用于對(duì)媒體資源進(jìn)行端到端播放的場(chǎng)景,可直接播放mp4、mkv等格式的視頻文件,為開發(fā)者提供標(biāo)準(zhǔn)化視頻功能實(shí)現(xiàn)路徑,助力構(gòu)建高性能、可定制的多媒體應(yīng)用。
使用說明
操作面板喚起:首頁(yè)點(diǎn)擊播放按鈕,視頻開始播放;再次點(diǎn)擊畫面進(jìn)入全屏模式點(diǎn)擊視頻界面,喚起視頻操作面板,再次點(diǎn)擊操作面板消失,如果不做任何操作,操作界面會(huì)5s自動(dòng)消失。
視頻播控:點(diǎn)擊暫停/播放按鈕,控制視頻暫停播放。
滑動(dòng)進(jìn)度條:視頻跳轉(zhuǎn)到指定位置播放,在中間區(qū)域顯示時(shí)間進(jìn)度。
倍速切換:可以選擇1.0、1.25、1.75、2.0進(jìn)行倍速調(diào)節(jié)。
視頻切換:連接網(wǎng)絡(luò)能在本地視頻和網(wǎng)絡(luò)視頻進(jìn)行切換。注意:network是網(wǎng)絡(luò)視頻,檢測(cè)到?jīng)]有連接網(wǎng)絡(luò)會(huì)退出應(yīng)用。
音軌切換:點(diǎn)擊AudioTrack音軌列表選擇框,可以選擇音軌進(jìn)行切換。
縮略圖獲取:點(diǎn)擊進(jìn)入獲取縮略圖界面,可以獲取視頻的縮略圖。
外掛字幕:點(diǎn)擊Subtitle開關(guān)列表選擇框,可以切換外掛字幕是否顯示。
樣例代碼拆解
下面是各個(gè)功能模塊代碼邏輯詳細(xì)分解。樣例源碼鏈接:
https://gitcode.com/openharmony/applications_app_samples/tree/master/code/BasicFeature/Media/VideoPlay
播控模塊:包括視頻播放、暫停、定點(diǎn)播放、倍速播放等。
1.視頻播放
a)視頻播放窗口在CoverXComponent自定義組件中實(shí)現(xiàn)。
b) CoverXComponent中創(chuàng)建XComponent組件,并在onLoad中初始化視頻。
c) 初始化視頻中創(chuàng)建視頻播放器,并監(jiān)聽播放狀態(tài)變化。
d) 在監(jiān)聽播放狀態(tài)中,等到達(dá)prepared狀態(tài)時(shí),調(diào)用avPlayer.play()播放視頻
2.視頻暫停
a)暫停按鈕繪制在VideoOperate組件中。
b) 使用Image組件繪制播放、暫停按鈕圖標(biāo),點(diǎn)擊調(diào)用視頻暫停、播放接口。
3.視頻定點(diǎn)播放
a) 使用Slider組件繪制視頻進(jìn)度條,并設(shè)置拖動(dòng)或點(diǎn)擊時(shí)觸發(fā)事件回調(diào)。
b) 在回調(diào)事件中,調(diào)用avPlayer.seek接口進(jìn)行視頻定點(diǎn)播放。
4.視頻倍速設(shè)置
a)使用Button組件作為倍速選擇按鈕,點(diǎn)擊后打開倍速選擇彈框。
b) 通過CustomDialogController自定義彈框?qū)崿F(xiàn)倍速選擇。
c) SpeedDialog組件中通過List實(shí)現(xiàn)1.0X、1.25X、1.75X、2.0X倍速選擇。
d) List點(diǎn)擊事件中,設(shè)置視頻播放具體倍速。
e) 調(diào)用avPlayer.setSpeed()設(shè)備倍速。
視頻切換:設(shè)備聯(lián)網(wǎng)后,本地視頻和網(wǎng)絡(luò)視頻都可以播放。
a) 首先是Row容器組件,組件中包含列表圖標(biāo),播放的視頻名稱,和列表下拉圖標(biāo)。并在點(diǎn)擊事件中設(shè)置isShow為true或false,控制視頻列表VideoPanel是否展示。
b) 通過VideoPanel繪制視頻列表,點(diǎn)擊切換視頻。
c) VideoPanel中通過List組件繪制視頻列表,包括視頻名稱、是否當(dāng)前播放,點(diǎn)擊后調(diào)用VideoChoose切換視頻播放。
d) 如下圖所示,VideoChoose中調(diào)用videoReset,即avPlayer.reset重置視頻。
音軌切換:視頻音軌切換,即視頻有多種語(yǔ)言配音可進(jìn)行音軌切換。
a) 通過Select組件繪制,并通過onSelect調(diào)用setAudioTrack接口設(shè)置音軌。
b) setAudioTrack中,通過deselectTrack和selectTrack進(jìn)行音軌切換。
字幕展示:設(shè)備聯(lián)網(wǎng)后,點(diǎn)擊字幕開,在視頻下方展示外掛字幕。
a) 通過Select組件繪制,并在onSelect調(diào)用setSubtitleState打開、關(guān)閉字幕。
b) setSubtitleState中設(shè)置當(dāng)前的字幕狀態(tài)。
c) 通過Text組件顯示字幕。
d) this.text是監(jiān)聽subtitleUpdate獲取的字幕內(nèi)容。
縮略圖獲?。?/strong>視頻跳轉(zhuǎn)到指定位置播放,在中間區(qū)域顯示時(shí)間進(jìn)度。
a) 通過createAVMetadataExtractor從媒體資源中提取元數(shù)據(jù),作為縮略圖。通過createAVImageGenerator從視頻資源中獲取指定時(shí)間的縮略圖。
結(jié)語(yǔ)
以上是本次樣例具體功能模塊的實(shí)現(xiàn),通過本樣例讓開發(fā)者們了解到如何使用AVPlayer開發(fā)視頻播放功能,包括創(chuàng)建AVPlayer、設(shè)置播放資源和窗口、設(shè)置播放倍速、播放控制(播放/暫停/跳轉(zhuǎn)/停止)、重置銷毀資源、字幕展示等;除此之外,開源鴻蒙也提供了豐富的基礎(chǔ)組件和其他功能模塊,依托開源特性可靈活定制底層功能,借助分布式架構(gòu)實(shí)現(xiàn) “一次開發(fā),多端部署”,大幅降低跨設(shè)備協(xié)同開發(fā)成本,一系列配套的開發(fā)工具和教程可讓開發(fā)者快速上手,歡迎更多的開發(fā)者加入到開源鴻蒙應(yīng)用開發(fā)中,創(chuàng)造更多奇思妙想的應(yīng)用。
-
視頻
+關(guān)注
關(guān)注
6文章
1993瀏覽量
74457 -
開源
+關(guān)注
關(guān)注
3文章
3879瀏覽量
45216 -
avplayer
+關(guān)注
關(guān)注
0文章
5瀏覽量
1026 -
鴻蒙
+關(guān)注
關(guān)注
60文章
2740瀏覽量
45026
原文標(biāo)題:拆·應(yīng)用丨第2期:基于開源鴻蒙的AVPlayer視頻播控開發(fā)樣例
文章出處:【微信號(hào):gh_e4f28cfa3159,微信公眾號(hào):OpenAtom OpenHarmony】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
基于開源鴻蒙的視頻播放開發(fā)樣例

基于開源鴻蒙的語(yǔ)音識(shí)別及語(yǔ)音合成應(yīng)用開發(fā)樣例

鴻蒙開發(fā)-視頻播放器方案
鴻蒙5開發(fā)寶藏案例分享---在線短視頻流暢切換
【每日精選】開源鴻蒙系統(tǒng)DAYU200教程及Tina Wi-Fi模組移植
鴻蒙開源全場(chǎng)景應(yīng)用開發(fā)資料匯總
基于OpenHarmony開發(fā)的demo樣例展示
HarmonyOS音頻開發(fā)指導(dǎo):使用AVPlayer開發(fā)音頻播放功能
鴻蒙開源意味著什么
openharmony開源社區(qū) OpenHarmony開發(fā)樣例上新了
OpenHarmony創(chuàng)意開發(fā)樣例亮相HDC2022 共創(chuàng)欣欣向榮的“開源雨林”

2025開源鴻蒙開發(fā)者大會(huì)圓滿落幕
華為亮相2025開源鴻蒙開發(fā)者大會(huì)
開鴻開發(fā)板深度體驗(yàn):從開源鴻蒙開發(fā)到AI場(chǎng)景實(shí)踐

評(píng)論