2012-11-21 6 views
8

Ich habe einen AVQueuePlayer basierten Audio-Streaming-Player, der im Hintergrund ausgeführt werden muss. Der Player muss weiterlaufen, bis die Wiedergabe der gesamten Liste abgeschlossen ist. Natürlich muss es angehalten werden, wenn die Netzwerkverbindung schlecht wird, aber es sollte automatisch fortgesetzt werden, wenn die Netzwerkverbindung zurückkommt.Wie erhalte ich einen Rückruf von AVQueuePlayer/AVPlayerItem, wenn das Netzwerk aktiv wird (und bereit ist zu spielen)?

Hierzu Ich Überwachung

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

KV mit O. Zum Beispiel, wenn die Netzwerkverbindung von einem temporären Fehler erholt, erwarte ich currentAVPlayerItem.status wird AVPlayerStatusItemReadyToPlay, die an meinen Player gemeldet werden und ich kann [AVQueuePlayer play] an diesem Punkt ausgeben.

Dieser Mechanismus (Logik) scheint in einigen Fällen zu funktionieren, aber in der Offline-Umgebung wird AVPlayerItem.status oft zu AVPlayerItemStatusFailed, welches Element AVQueuePlayer automatisch zu überspringen scheint. Als Ergebnis wird die Warteschlange leer und es kann kein Rückruf von AVPlayerItem empfangen werden.

Ich hatte gehofft, dass einige Immobilien in AVPlayer ändern wird, wenn die Netzwerkverbindung schlecht geht/erholt sich, aber nichts zu ändern scheint (status, error usw.).

Natürlich kann ich Reachability überwachen, aber das funktioniert nicht, wenn die App im Hintergrund ausgeführt wird.

Wie kann ich wissen, wann das Netzwerk wieder hochfährt und AVQueuePlayer in dieser Situation wieder spielbar ist?

Ich bin vielleicht gerade ein Anfänger in diesem Bereich. Wenn irgendjemand mir eine allgemeine Vorstellung davon geben kann, wie er/sie kontinuierliche AVQueuePlayer Spielerfahrung erreicht, ohne durch vorübergehende Probleme mit der Netzwerkverbindung komplett gestoppt zu werden, wäre das eine großartige Hilfe!

+0

Mit dem gleichen Problem. Haben Sie eine Lösung gefunden? – adamsfamily

Antwort

0

können Sie AVPlayerItemPlaybackStalledNotification überwachen, um zu wissen, wann der Gegenstand seinen Puffer fertig zu spielen, aber nicht die gesamte Datei:

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

Sobald es genügend Puffer ist weiterhin, sollten Sie eine entsprechende Benachrichtigung erhalten zu playbackLikelyToKeepUp geschickt, die es klingt wie Sie überwachen bereits.

Verwandte Themen