Swift實現(xiàn)音視頻播放器

最近封裝了一個音視頻播放器,拷貝進(jìn)項目即能使用,大致實現(xiàn)了以下功能:

-本地網(wǎng)絡(luò)音視頻播放(無網(wǎng)自動播放已緩存視頻)

-屏幕滑動調(diào)節(jié)進(jìn)度、亮度、音量(模擬器中音量亮度無法顯示)

-倍速播放

-全屏狀態(tài)畫面(自適應(yīng)、鋪滿)調(diào)節(jié)

-豎播視頻適配(豎播視頻全屏為豎屏)

-屏幕發(fā)生物理旋轉(zhuǎn)時調(diào)整全屏狀態(tài)

-在wifi條件下自動緩存網(wǎng)絡(luò)視頻

-斷點續(xù)播功能

-自定義播放結(jié)束頁面及音頻播放界面

-長按加速視頻

-畫中畫功能


倍速播放


滑動調(diào)節(jié)


斷點續(xù)播



畫中畫




具體實現(xiàn)源碼在以下鏈接中:

https://github.com/isHYE/HYPlayerDemo

調(diào)用方法:

將項目中HYPlayer文件夾拖拽進(jìn)自己項目中(項目為swift5編寫,部分語法需要自行適配)。

在自己controller中實例化“HYPlayerCommonView”

初始化播放器

初始化|切換 音視頻則調(diào)用 updateCurrentPlayer 方法(具體方式查看demo)

更新播放內(nèi)容


HYPlayerCommonConfig為需要傳入播放器的唯一參數(shù)(可根據(jù)自己需求傳參),具體配置如下:

HYPlayer配置


播放器 緩存|播放狀態(tài) 相關(guān)則會通過代理方法進(jìn)行回調(diào),如有需要可進(jìn)行實現(xiàn):

變化回調(diào)


最后在controller的viewWillDisappear中調(diào)用 videoView.dealToDisappear()以銷毀播放器。



部分實現(xiàn)說明:

1.視頻全屏實現(xiàn):

通過AVAsset獲取視頻尺寸? ->? 根據(jù)視頻寬高判斷為橫播視頻還是豎播視頻? ->? 根據(jù)豎播橫播旋轉(zhuǎn)屏幕? ->? 全屏?xí)r從baseView移除播放器并添加至UIApplication.shared.windows,修改AVPlayerLayer尺寸

獲取視頻尺寸
旋轉(zhuǎn)屏幕


2.屏幕快捷操作:

通過重寫touchesBegan、touchesMoved、touchesEnded監(jiān)聽用戶滑動手勢? ->? 記錄滑動起始點及之后活動軌跡判斷所處功能區(qū)域? ->? 對播放器做出相應(yīng)調(diào)整

- AVPlayer.seek ...調(diào)整播放進(jìn)度

- UIScreen.main.brightness ... 調(diào)整屏幕亮度

- MPVolumeView -> UISlider.setValue ...調(diào)整音量

快捷操作類型
音量調(diào)整對象



部分需要注意的點:

視頻全屏鎖定時需要在controller層修改 shouldAutorotate 屬性值來限制屏幕轉(zhuǎn)動(通過回調(diào) fullScreenLock() 修改isRollEnable)

?注意:在controller被UINavigationController或UITabBarController嵌套式,在這兩個基礎(chǔ)控制器也需要重寫以下屬性

屏幕轉(zhuǎn)動限制

?注意:通過判斷為退出當(dāng)前頁面還是前往二級頁面分別調(diào)用HYPlayer的dealToDisappear與playerPause。

dealToDisappear為銷毀播放器,調(diào)用后播放器不可再播放視頻。

playerPause為暫停播放器,可通過playerPlay繼續(xù)播飯。


附加功能:

添加緩存列表用于主動緩存視頻以及清除已緩存視頻。

緩存列表



播放器目前還有很多待完善的功能,大家如有什么建議或希望添加的功能也可留言作者,功能會持續(xù)更新!

demo鏈接:https://github.com/isHYE/HYPlayerDemo

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容