每次,当我尝试使用播放兆字节视频时AVPlayer
,它最初会显示一秒钟的白屏,然后开始播放视频。
如果视频已经缓存,为什么会发生这种情况?有没有办法阻止这种情况发生,以便它直接进入视频而不显示白屏?
我尝试使用AVPlayer
's isReady
检查状态AVPlayer
并仅在准备好时播放视频,但仍显示白屏。
另外,每次当我尝试获取即将播放的视频的视频时长时AVPlayer
我最初总是得到 0.0 秒,所以我无法向视频添加计时器,因为我无法获取视频持续时间,因为它一直显示白屏一秒钟。
首先,AVPlayer
不显示任何白色屏幕,它的背景是白色的。所以,基本上你的AVPlayer
开始晚了。我猜你按了一个UIButton
然后它加载文件AVPlayer
并立即开始播放。这就是问题所在。可能需要一些时间AVPlayer
缓冲足够的数据并准备播放文件。使用 KVO,可以通知玩家状态的变化。
所以首先你需要禁用播放按钮,加载AVPlayer
并添加一个观察者:
play.enabled = NO;
player = [AVPlayer playerWithURL:URL];
[player addObserver:self forKeyPath:@"status" options:0 context:nil];
检查后启用即可AVPlayerStatusReadyToPlay
:
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object
change:(NSDictionary *)change context:(void *)context {
if (object == player && [keyPath isEqualToString:@"status"]) {
if (player.status == AVPlayerStatusReadyToPlay) {
play.enabled = YES;
}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)