2011-05-16 76 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