ios 網絡視頻播放---分解ZFPlayer
核心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