Вам нужно посмотреть на настройку наблюдателей значения ключа для загруженного времени и использовать это, чтобы выяснить, ожидаете ли вы данных в текущей точке воспроизведения.
Наблюдатели настраиваются с помощью метода addObserver:self forKeyPath: options: context:
на AVPlayerItem
, а затем в обратном вызове observeValueForKeyPath: ofObject: change: context:
вы можете выяснить, сколько времени было загружено по сравнению с тем, где в элементе проигрывается игрок.
При буферизации переменная rate
не будет уменьшаться до нуля, поскольку это требуемая скорость воспроизведения, а не фактическая достижимая скорость.