Ich habe einen AVQueuePlayer
basierten Audio Streaming Player, der im Hintergrund laufen 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.
Dafür überwache ich
AVPlayerItem.status
AVPlayerItem.playbackLikelyToKeepUp
AVPlayer.currentItem
AVPlayer.status
AVPlayer.error
mit KVO. Wenn beispielsweise die Netzwerkverbindung von einem temporären Fehler wiederhergestellt wird, erwarte ich, dass currentAVPlayerItem.status
zu AVPlayerStatusItemReadyToPlay
wird, was meinem Player gemeldet wird, 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
zu AVPlayerItemStatusFailed
, wobei der Gegenstand AVQueuePlayer
automatisch zu überspringen scheint. Daher wird die Warteschlange leer und es kann kein Rückruf von AVPlayerItem
empfangen werden.
Ich hatte gehofft, dass sich eine Eigenschaft in AVPlayer
ändert, wenn die Netzwerkverbindung schlecht wird / sich wieder erholt, aber nichts scheint sich zu ändern ( status
, error
etc).
Natürlich kann ich Reachability
überwachen, aber das funktioniert nicht, wenn die App im Hintergrund läuft.
Wie kann ich wissen, wann das Netzwerk wieder hochfährt und AVQueuePlayer
in dieser Situation wieder spielbar ist?
Ich bin vielleicht gerade ein Novize in diesem Bereich. Wenn irgendjemand mir eine generelle Vorstellung davon geben kann, wie er / sie kontinuierliche Spielerfahrung erreicht, ohne durch vorübergehende Probleme mit der Netzwerkverbindung komplett gestoppt zu werden, wäre das auch eine großartige Hilfe!
Sie können AVPlayerItemPlaybackStalledNotification
überwachen, um zu wissen, wann das Objekt seinen Puffer aber nicht die gesamte Datei abgespielt hat:
Sobald genügend Puffer vorhanden ist, um fortzufahren, sollten Sie eine Benachrichtigung an playbackLikelyToKeepUp
senden, die sich so anhört, als würden Sie bereits überwachen.
Tags und Links iphone ios audio avplayer avqueueplayer