执行Live HTTP流式传输时显示AVPlayerItemStatusUnknown

时间:2011-05-16 22:23:13

标签: ios avfoundation avplayer

我正在使用AVPlayer查看存储在亚马逊CloudFront上的视频 - 使用了Live HTTP协议,播放列表和细分受众群存储在S3上并使用CloudFront进行托管。

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

AVPlayer.currentItem.status == AVPlayerItemStatusUnknown

当选择新的视频播放列表时,此状态仍然存在 - 我在设置新的播放列表网址之前尝试取消分配AVPlayer,并且在我终止应用程序之前,AVPlayerItemStatusUnknown状态仍然存在。

两个问题。是否有人使用Amazaon CloudFront来托管遇到相同问题的视频?有没有人知道一个工作,所以我可以恢复AVPlayer的状态,以防止用户不得不终止该应用程序,以查看更多的视频?

非常感谢,

//亚伦

2 个答案:

答案 0 :(得分:0)

对于流媒体,这看起来像是一种正常行为。你为'status'属性添加一个观察者吗?当状态更改为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
        }
    }   
}

答案 1 :(得分:0)

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

//亚伦