changsanjiang / SJBaseVideoPlayer

video player. rotation, volume, brightness, rate, play, pause, stop, seekToTime, present.
MIT License
128 stars 52 forks source link

正常播放后断开网络,点击重新加载导致闪退 #19

Open hootigger opened 3 years ago

hootigger commented 3 years ago

18 所描述的情况是弱网导致fail继续播放会导致崩溃,现在测试发现当播放视频正常播放后,断开网络(保证缓冲进度未100%),然后播放到未缓冲的资源时,切换到了 错误控制层,此时点击 重试 会触发崩溃.

// 重新创建playerItem规避`An AVPlayerItem cannot be associated with more than one instance of AVPlayer`错误.
        if (avPlayerItem != nil && avPlayerItem.status == AVPlayerStatusFailed)
...

之前修复的代码加了fail状态判断,现在发现上述情况是AVPlayerStatusReadyToPlay的状态,所以未重新创建AVPlayerItem导致重复bind. 现在状态判断处理为 if (avPlayerItem != nil && avPlayerItem.status != AVPlayerStatusUnknown)