-
Notifications
You must be signed in to change notification settings - Fork 1.8k
Open
Description
buffer为空时,先设置 loadState 为 ZFPlayerLoadStateStalled:
if (self.playerItem.playbackBufferEmpty) {
self.loadState = ZFPlayerLoadStateStalled;
[self bufferingSomeSecond];
}
然后在bufferingSomeSecond方法中,调用了pause,把 isPlaying 设置为 NO
[self pause];
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
// 如果此时用户已经暂停了,则不再需要开启播放了
if (!self.isPlaying && self.loadState == ZFPlayerLoadStateStalled) {
self.isBuffering = NO;
return;
}
[self play];
// 如果执行了play还是没有播放则说明还没有缓存好,则再次缓存一段时间
self.isBuffering = NO;
if (!self.playerItem.isPlaybackLikelyToKeepUp) [self bufferingSomeSecond];
});
那过了3s,“!self.isPlaying && self.loadState == ZFPlayerLoadStateStalled” 总是为 YES,就会直接 return 了,不会执行下面尝试 play、或者继续 bufferingSomeSecond 的代码。
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels