Ios AVPlayerItemStatusUnknown在执行实时HTTP流时显示

Ios AVPlayerItemStatusUnknown在执行实时HTTP流时显示,ios,avfoundation,avplayer,Ios,Avfoundation,Avplayer,我使用AVPlayer查看存储在亚马逊CloudFront上的视频——使用实时HTTP协议,播放列表和片段存储在S3上,并使用CloudFront托管 播放几段视频后,我开始从AVPlayer项目中获取AVPlayerItemStatusUnknown的状态 AVPlayer.currentItem.status == AVPlayerItemStatusUnknown 当选择新的视频播放列表时,此状态持续存在——在设置新的播放列表URL之前,我已尝试取消分配AVPlayer,并且AVPlay

我使用AVPlayer查看存储在亚马逊CloudFront上的视频——使用实时HTTP协议,播放列表和片段存储在S3上,并使用CloudFront托管

播放几段视频后,我开始从AVPlayer项目中获取AVPlayerItemStatusUnknown的状态

AVPlayer.currentItem.status == AVPlayerItemStatusUnknown
当选择新的视频播放列表时,此状态持续存在——在设置新的播放列表URL之前,我已尝试取消分配AVPlayer,并且AVPlayerItemStatusUnknown状态仍然保持,直到我终止应用程序

两个问题。是否有人使用Amazaon CloudFront托管视频时遇到了相同的问题?是否有人知道一个解决方法,以便我可以恢复AVPlayer的状态,以防止用户必须终止应用程序才能查看更多视频

非常感谢,


//aaron

对于流媒体,这在我看来是正常的行为。是否为“状态”属性添加观察者?当状态更改为AVPlayerItemStatusReadyToPlay时,应开始播放

[item addObserver:self forKeyPath:@"status" options:0 context:nil];

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object
                        change:(NSDictionary *)change context:(void *)context
{ 
    if ([keyPath isEqualToString:@"status"]) {
        AVPlayerItem *item = (AVPlayerItem *)object;
        if (item.status == AVPlayerItemStatusReadyToPlay) {
            //Ready
        }
    }   
}

我发现了问题。简单的回答是,这是一个过度保留的AVPlayer,顺便说一句,使用泄漏模板的仪器工具没有注意到它。对不起,误报了


//亚伦

感谢您的回复。是的,我正在观察该属性,并允许用户在我获得AVPlayerItemStatusReadyToPlay后播放。我确实找到了我在这里回答的问题。如果不使用密钥更改,请在observeValueForKeyPath方法末尾调用super