2011-05-16 65 views
1

我使用AVPlayer查看存储在Amazon CloudFront上的视频 - 使用Live HTTP协议,播放列表和段存储在S3上并使用CloudFront托管。AVPlayerItemStatusUnknown在进行Live HTTP流式传输时显示

打了几个视频,我开始从AVPlayer项目

AVPlayer.currentItem.status == AVPlayerItemStatusUnknown 

当选择一个新的视频播放列表这种状态持续获得AVPlayerItemStatusUnknown的状态之后 - 我试着去设置分配前AVPlayer一个新的播放列表URL并仍然保持AVPlayerItemStatusUnknown状态,直到我终止该应用程序。

两个问题。有人使用Amazaon CloudFront来处理遇到相同问题的视频吗?有人知道解决办法,所以我可以恢复AVPlayer的状态,以防止用户不得不终止应用程序来查看任何更多的视频?

非常感谢,

//亚伦

回答

0

我发现了这个问题。简短的回答是,它是一个过度保留的AVPlayer,顺便说一下,仪器工具没有使用泄漏模板发现它。抱歉虚惊一场。

// aaron

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 
     } 
    } 
} 
+0

感谢您的回复。是的,我正在观察该属性并允许用户在获取AVPlayerItemStatusReadyToPlay后播放。我确实发现了我在这里回答的问题。 – Aaron 2011-05-17 16:43:53

+0

如果您不使用密钥更改,请在observeValueForKeyPath方法的末尾调用super – TigerCoding 2016-04-27 16:12:43