Обнаружение видео киосков в AVPlayer - PullRequest
0 голосов
/ 23 ноября 2018

Я играю поток HLS, используя AVPlayer API в моем приложении.Я хотел бы иметь возможность обнаруживать ситуации, когда воспроизведение видео останавливается из-за недостаточной пропускной способности сети или низкого качества соединения.

Существует ли какой-либо надежный способ обнаружения, если воспроизведение видео действительно воспроизводится на экране нормально?

Во время моего тестирования я видел ситуации, когда все следующие проверки сообщают о статусах OK, несмотря на то, что воспроизведение видео фактически застыло на экране:

AVPlayer.status = .readyToPlay
AVPlayer.timeControlStatus = .playing
AVPlayerItem.status = .readyToPlay
AVPlayerItem.isPlaybackBufferEmpty = false
AVPlayerItem.isPlaybackLikelyToKeepUp  = true

+, а также addBoundaryTimeObserver обратные вызовыбыли уволены.

Некоторые из них в конечном итоге становятся отрицательными, но только после задержки.

Существует ли какой-либо 100% надежный способ обнаружения, если видео действительно воспроизводится на устройстве?

1 Ответ

0 голосов
/ 15 декабря 2018

Чтобы убедиться, что медиа воспроизводится нормально, проверьте AVPlayerItem s rate

Также вы можете использовать уведомления AVPlayerItem, чтобы обнаружить что-то не так:

  • AVPlayerItemPlaybackStalled
  • AVPlayerItemFailedToPlayToEndTime
  • AVPlayerItemDidPlayToEndTime

для вашей информации, AVPlayerItemDidPlayToEndTime может быть запущен, когда буфер пуст И сетьотсутствует.

у вас есть пример здесь: PlaybackObservingService

...