Это очень странная ошибка.
У меня есть tableView с каждой ячейкой, использующей AVPlayer
для потоковой передачи видео с удаленного сервера (подумайте о временной шкале, подобной Vine). Поэтому, когда я прокручиваю, повторно используемые ячейки перенастраивают свой проигрыватель с новым видео.
Проблема в том, что если я прокручиваю вперед и назад очень быстро, получая одно и то же видео на экране и за его пределами, запрос, отправленный AVPlayer, в конечном итоге изменяется, чтобы включать HTTP-заголовки If-None-Match
и If-Modified-Since
, которых нет в остальной части экрана. время. Он систематически заставляет сервер возвращать 304 Not Modified
ответ.
Кажется, это не нравится AVPlayer playerItem, который меняет свой статус на AVPlayerItemStatusFailed
(что интересно, статус AVPlayer по-прежнему AVPlayerStatusReadyToPlay
). Ошибка AVErrorUnknown
(-11800) с OSStatus -12983 (который нигде не задокументирован и отсутствует в заголовке всего iOS SDK).
Вот тогда и становится странно: что бы я ни делал дальше, AVPlayer и его playerItem безвозвратно сгорают. Даже если я перенастрою их с другим активом, они просто вернут этот статус и покажут черную рамку. Еще более странно: даже если я инициализирую другой AVPlayer, AVPlayerItem и AVAsset, он больше не будет воспроизводиться, мне придется убить и перезапустить приложение.
На данный момент я довольно невежественен. Есть идеи, что здесь происходит? Запрещение игроку включать эти заголовки в свое соединение исправит это, но не раскрывает его сериализатор запросов.