Adp*_*Adp 5 video objective-c avfoundation ios snapchat
每次,当我尝试使用 播放兆字节视频时AVPlayer,它首先会显示一秒钟的白屏,然后开始播放视频。
如果视频已经缓存,为什么会发生这种情况?有没有办法阻止这种情况发生,以便它直接进入视频而不显示白屏?
我尝试使用AVPlayer'sisReady检查视频的状态AVPlayer并仅在视频准备就绪时播放视频,但它仍然显示白屏。
另外,每次当我尝试获取即将播放的视频的视频持续时间时,AVPlayer我最初都会得到 0.0 秒,所以我也无法向视频添加计时器,因为我无法获取视频持续时间,因为它持续显示白屏一秒钟。
首先,AVPlayer不显示任何白屏,它的背景是白色的。所以,基本上你AVPlayer开始晚了。我猜你按 aUIButton然后它会加载文件AVPlayer并立即开始播放。这就是问题所在。可能需要一些时间AVPlayer缓冲足够的数据并准备好播放文件。使用 KVO,可以通知玩家状态的变化。
因此,首先您需要禁用播放按钮,加载AVPlayer并添加观察者:
play.enabled = NO;
player = [AVPlayer playerWithURL:URL];
[player addObserver:self forKeyPath:@"status" options:0 context:nil];
Run Code Online (Sandbox Code Playgroud)
检查后启用它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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5010 次 |
| 最近记录: |