1

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

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

AVPlayer.currentItem.status == AVPlayerItemStatusUnknown

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

两个问题。是否有人使用亚马逊 CloudFront 托管视频遇到同样的问题?有谁知道解决方法,所以我可以恢复 AVPlayer 的状态,以防止用户不得不终止应用程序才能查看更多视频?

非常感谢,

//亚伦

4

2 回答 2

0

对于流媒体,这对我来说似乎是一种正常行为。您是否为“状态”属性添加了观察者?当状态更改为 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
        }
    }   
}
于 2011-05-17T10:37:19.277 回答
0

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

//亚伦

于 2011-05-17T15:00:57.380 回答