2013-04-29 74 views
1

正如標題後流站,我想生活在兩個的iOS和使用AVPlayer例如OS X流互聯網廣播。一切正常,如預期一樣簡單player = [AVPlayer playerWithURL:URL];AVPlayer實況廣播15分鐘左右

使用該應用程序時,我注意到,流只是在15分鐘後停止,給或少數。問題是沒有給予注意。

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

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { 
    if (object == player) { 
     if ([keyPath isEqualToString:@"status"]) { 
      NSLog(@"status -> %ld", player.status); 
     } 
     if ([keyPath isEqualToString:@"rate"]) { 
      NSLog(@"rate -> %f", player.rate); 
     } 
    } 
} 

兩個值切換到1,但即使停止播放音頻也不會再次切換。在iOS上,播放右上角的圖標消失了,但應用程序仍然認爲由於player.rate值沒有更改而導致播放音頻。

首先,我認爲這是流,所以我嘗試了其他流5by5和twit,同樣的事情發生。

然後我認爲這是我的連接,所以在流開始後,我關掉了我的連接,一分鐘左右後,我觀察到的是AVPlayerItemDidPlayToEndTimeNotification被解僱。

花了一段時間來測試這個。

因此,任何想法爲什麼會發生這種情況?更重要的是,如何解決它?

回答

1

好的,我注意到player.currentTime卡住了,而player.rate是。因此,至少在OS X上,我可以跟蹤它並在停滯的情況下重新啓動流。

2013-04-30 12:49:07.730 Radio[60315:303] rate -> 1.000000 
2013-04-30 12:49:07.731 Radio[60315:303] status -> 1 
2013-04-30 13:09:04.154 Radio[60315:303] Stuck at 1195 x 1 
2013-04-30 13:09:05.155 Radio[60315:303] Stuck at 1195 x 2 
2013-04-30 13:09:06.155 Radio[60315:303] Stuck at 1195 x 3 
2013-04-30 13:09:07.155 Radio[60315:303] >> Stuck! Restart stream << 
2013-04-30 13:09:09.426 Radio[60315:303] rate -> 1.000000 
2013-04-30 13:09:09.426 Radio[60315:303] status -> 1 
+0

不錯的工作!我相信AVPlayer存在問題,因爲發生卡住時,AVPlayer的定期觀察者不會再被解僱。 – wao813 2017-04-24 17:14:19