首先,AVPlayer
不显示任何白屏,它的背景是白色的。所以,基本上你AVPlayer
的起步晚了。我猜你按 aUIButton
然后它会加载文件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;
}
}
}