1. 程式人生 > >ios 網絡視頻播放---分解ZFPlayer

ios 網絡視頻播放---分解ZFPlayer

desc github font 緩存 ready interval dict 是否播放 sel

技術分享圖片

核心1. AVPlayerLayer 用於顯示視頻

核心2. 監聽播放相關屬性

A. status:

AVPlayerStatusReadyToPlay---視頻就可以播放了

AVPlayerStatusFailed---視頻加載失敗,這時可以通過self.player.error.description屬性來找出具體的原因

AVPlayerItemStatusUnknown----未知原因

B. loadedTimeRanges:當前視頻緩存情況(緩沖的進度),監聽此屬性可以在UI中更新緩沖進度,也是很有用的一個屬性

C. playbackBufferEmpty:當前視頻緩存是否充足,若緩沖太少繼續緩沖,動畫繼續。

D. playbackLikelyToKeepUp:和playbackBufferEmpty是一對,用於監聽緩存足夠播放的狀態,由於 AVPlayer 緩存不足就會自動暫停,所以緩存充足了需要手動播放,才能繼續播放

核心3. addPeriodicTimeObserverForInterval 更新頻率,用於更新當前播放進度

核心4. 監聽 AVPlayerItemDidPlayToEndTimeNotification 視頻是否播放完畢

核心5. 緩存不夠繼續緩存

核心6. 視頻總時間CMTimeGetSeconds(self.player.currentItem.duration)

核心7. 視頻播放當前時間 CMTimeGetSeconds(self.playerItem.currentTime)

核心8. 快進 [_player seekToTime:seekTime toleranceBefore:kCMTimeZero toleranceAfter:kCMTimeZero completionHandler:completionHandler];

緩存動畫觸發機制

startAnimation:

1.初始進入啟動加載

2.playbackBufferEmpty=YES,緩存為空不足以支撐繼續播放

stopAnimating

1. 播放失敗 AVPlayerItemStatusFailed

2. 可以繼續播放的狀態下 playbackLikelyToKeepUp = YES

3. 視頻加載成功,準備播放 AVPlayerItemStatusReadyToPlay

demo地址:https://github.com/MadahaCEO/VideoDemo

ios 網絡視頻播放---分解ZFPlayer