Действительно, когда AVPlayer
перестает играть из-за плохого соединения, AVPlayerItem
имеет состояние отказа.Вы должны создать новый объект AVPlayerItem
и использовать метод replaceCurrentItem(with:)
AVPlayer
.
Соответствующий способ узнать о статусе игрока - это проверить соответствующий коэффициент AVPlayerItem
.0 означает, что игрок остановился.rate! = 0 означает, что игрок играет.
Также используйте уведомления AVPlayerItem
, чтобы обнаружить что-то не так:
- AVPlayerItemPlaybackStalled
- AVPlayerItemFailedToPlayToEndTime
- AVPlayerItemDidPlayToEndTime (может быть запущено, когда буфер пуст И сеть отсутствует)
Эта библиотека iOS ModernAVPlayer может помочь вам понять процесс.Проверьте файл PlayingState.swift
и связанные службы.