Moja aplikacja iOS używa AVPlayer
do strumieniowego przesyłania multimediów z Internetu. Używam KVO do wykrywania zdarzeń, takich jak buforowanie (playbackBufferEmpty
) i bycie złapanym (playbackLikelyToKeepUp
). Zauważyłem jednak niesamowicie specyficzny błąd. Chociaż podczas większości spowolnień sieciowych trafia playbackBufferEmpty
KVO, a po jego odzyskaniu, playbackLikelyToKeepUp
KVO jest trafiony zgodnie z oczekiwaniami, zauważyłem (z pewną częstotliwością), że AVPlayer
będzie buforował przez pewien okres czasu, odzyskać, playbackLikelyToKeepUp
trafiony , dźwięk będzie odtwarzany przez około 1-3 sekund, a następnie dźwięk przestanie być odtwarzany ponownie, tak jakby był buforowany - bez ponownego kliknięcia w KVO . I nie wychodzi z tego.AVPlayer Nie odzyskuje po buforowaniu
TL; DR: playbackBufferEmpty
(10-20 sekund) ->playbackLikelyToKeepUp
-> gra dla 1-3s -> przestaje grać, ale nie ma KVO.
Najgorsze, gdy tak się stanie, AVPlayer
nie uruchamia się automatycznie ponownie, tak jak podczas odzyskiwania po buforowaniu, a aplikacja milczy, aż AVPlayer
zostanie ręcznie zatrzymana/uruchomiona ponownie. Zdarza się to mniej więcej za każdym razem, gdy w końcu będę streamować. Czy jest to znany problem z AVPlayer
? Czy to jakieś trzecie wydarzenie KVO, które mogę obejrzeć? Lub jakieś wskazówki, jak to debugować? Dzięki!
EDIT: Dodatkowe informacje: AVPlayer
„s error
nieruchomość jest nil
, kiedy to nastąpi, obiekt status
jest gotowy do gry, a właściwość rate
to 1. AKA Nic innego dziwnie dzieje, o ile mi móc powiedzieć.