2012-11-21 23 views
8

Arka planda çalışması gereken bir AVQueuePlayer tabanlı ses akışı oynatıcım var. Oyuncu, tüm listeyi bitirene kadar çalışmaya devam etmelidir. Ağ bağlantısı kötüye giderse, duraklatmak zorunda kalacak, ancak ağ bağlantısı geri geldiğinde otomatik olarak devam etmelidir. Bunun için Ağ etkin olduğunda (ve oynatılmaya hazır olduğunda) AVQueuePlayer/AVPlayerItem'den nasıl geri arama yapılır?

, ben KV kullanarak

  • AVPlayerItem.status
  • AVPlayerItem.playbackLikelyToKeepUp
  • AVPlayer.currentItem
  • AVPlayer.status
  • AVPlayer.error

izliyorum O. Örneğin, ağ bağlantısı geçici hatadan kurtarırsa, currentAVPlayerItem.status'un player'ma bildirilecek olan AVPlayerStatusItemReadyToPlay olmasını bekliyorum ve bu noktada [AVQueuePlayer play] yayınlayabilirim.

Bu mekanizma (mantık) bazı durumlarda çalışıyor gibi görünüyor, ancak çok sık sık çevrimdışı ortamda, AVPlayerItem.status, AVQueuePlayer öğesinin otomatik olarak atladığı görünüyor AVPlayerItemStatusFailed olur. Sonuç olarak, sıra boş olacak ve AVPlayerItem'dan geri arama yapılamaz.

AVPlayer'daki bazı özelliklerin ağ bağlantısı bozulduğunda/kurtarıldıklarında değişeceğini umuyorum, ancak hiçbir şey değişmiyor gibi görünüyor (status, error vb.).

Açıkçası, Reachability izleyebiliriz, ancak uygulama arka planda çalışırken çalışmaz.

Ağın ne zaman geri geldiğini ve AVQueuePlayer'un bu durumda yeniden oynatılabileceğini nasıl bilebilirim?

Sadece bu alanda bir acemi olmak olabilir. Eğer herkes bana geçici ağ bağlantısı sorunları ile tamamen durmadan sürekli AVQueuePlayer oynama deneyimine nasıl ulaştığı hakkında genel bir fikir verebilirse, bu harika bir yardım olur! devam etmek için yeterli bir tampon olduğunu bir kez

[[NSNotificationCenter defaultCenter] 
     addObserver:self 
     selector:@selector(AVPlayerItemPlaybackStalledNotification:)             
     name:AVPlayerItemPlaybackStalledNotification object:playerItem]; 

, bunu sizin gibi sesler playbackLikelyToKeepUp gönderilen bir bildirim almalısınız: öğenin tampon tamamını değil dosyasını oynatmaya bittiğinde

+0

Aynı sorunu yaşıyor. Buna bir çözüm buldunuz mu? – adamsfamily

cevap

0

Bilmek AVPlayerItemPlaybackStalledNotification izleyebilirsiniz zaten izliyorsun.