首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何正确使用AVPlayer,使其在播放视频之前不显示白屏幕?

如何正确使用AVPlayer,使其在播放视频之前不显示白屏幕?
EN

Stack Overflow用户
提问于 2015-04-29 05:50:42
回答 4查看 4.6K关注 0票数 5

每次,当我尝试使用AVPlayer播放一个兆字节的视频时,它最初会显示一个白色的屏幕,然后启动视频。

如果视频已经被缓存,为什么会发生这种情况?有没有办法阻止这种情况发生,这样它就可以直接进入视频而不显示白色屏幕?

我试着用AVPlayerisReady来检查AVPlayer的状态,只在它准备好的时候播放视频,但是它仍然显示白色的屏幕。

而且,每次我试图获得即将通过AVPlayer播放的视频的持续时间时,我最初的播放时间为0.0秒,所以我也无法在视频中添加计时器,因为我无法获得视频的持续时间,因为它会在一秒钟内显示一个白色的屏幕。

EN

Stack Overflow用户

回答已采纳

发布于 2015-04-29 06:33:05

首先,AVPlayer不显示任何白色屏幕,它的背景是白色的。所以,基本上你的AVPlayer启动得很晚。我猜您按了一个UIButton,然后它在AVPlayer中加载文件,然后立即开始播放它。这就是问题所在。AVPlayer可能需要一些时间来缓冲足够的数据并准备好播放该文件。使用KVO时,可以通知玩家状态的更改。

因此,首先需要禁用play按钮,加载AVPlayer并添加一个观察者:

代码语言:javascript
运行
复制
play.enabled = NO;
player = [AVPlayer playerWithURL:URL];
[player addObserver:self forKeyPath:@"status" options:0 context:nil]; 

检查AVPlayerStatusReadyToPlay后启用它

代码语言:javascript
运行
复制
- (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;
        }
    }
}
票数 4
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29935373

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档