AVPlayer иногда не воспроизводит видео

«AVPlayer

У меня есть сетка видео, AVPlayer иногда не воспроизводит видео и показывает этот отключенный значок со следующей ошибкой,

Domain=AVFoundationErrorDomain Code=-11850 "Operation Stopped" UserInfo={NSUnderlyingError=0x7f927ede4210
{Error Domain=NSOSStatusErrorDomain Code=-12939 "(null)"}
, NSLocalizedFailureReason=The server is not correctly configured., NSLocalizedDescription=Operation Stopped})

но то же видео воспроизводится позже, так что это случайная проблема. Любая помощь в том, что происходит не так?


person BaSha    schedule 20.11.2015    source источник
comment
см. stackoverflow.com/questions/ 6138120 / .. возможно это диапазон запросов   -  person Daij-Djan    schedule 20.11.2015
comment
@ Дайдж-Джан: спасибо, но не помогло   -  person BaSha    schedule 23.12.2015
comment
ты решил эту проблему?   -  person Mutawe    schedule 07.03.2018
comment
У меня точно такая же проблема, URL-адрес видео, который я получаю из одного SDK, который иногда воспроизводится, но случайно не срабатывает с этой ошибкой. avplayer показывает крестик, как указано выше. url отлично работает в браузерах   -  person Sunil_Vaishnav    schedule 26.03.2020


Ответы (1)


Ошибка поиска

Я считаю, что многие люди, такие как я, ищут решение этой проблемы.

Я потратил целый день, наконец решил проблему.

По вопросу, при запуске видео произошла ошибка.

Такие как:

Domain=AVFoundationErrorDomain Code=-11850 "Operation Stopped"

затем я ищу этот номер ошибки и нахожу его:

AVErrorServerIncorrectlyConfigured = -11850

В документе Apple я нахожу информацию об этой ошибке.

HTTP-сервер, отправляющий медиаресурс, не настроен должным образом. Это может означать, что сервер не поддерживает запросы диапазона байтов.

Найти ошибку

Итак, мы должны понимать, что это проблема сервера.

Теперь мы воспроизводим видео и берем весь http-запрос для анализа.

Обнаружит, что AVPlayerItem отправляет HTTP-запрос.

когда AVPlayerItem получает URL-адрес видео, он выполняет следующую задачу:

  1. Отправьте байтовый запрос HTTP-запроса и диапазон = 0-1
  2. Если код ответа 206 и возвращает 1 байт данных, он выполняет 3-ю задачу, если нет, произошла ошибка AVErrorServerIncorrectlyConfigured.
  3. продолжить, отправить другой HTTP-запрос, чтобы загрузить сегмент всей продолжительности. и ответ кода VideoData должен быть 206

В моей ситуации при отправке HTTP-запроса диапазона [0-1] серверная сторона дает мне ответ 200 OK, поэтому произошла ошибка.

Результат

Итак, вам нужно попросить вашего серверного инженера обнаруживать все ответы, которые вернутся.

Я бы хотел, чтобы это могло вам помочь.

person charvel    schedule 15.02.2017
comment
Небольшое примечание, прежде чем он отправит последний запрос на получение полного видео, он отправляет несколько частичных запросов, 0-1, 0-65535, 15928-65535, 131072-196607, 262144-327679, 65536-131071, 196608-262143 , 327680-116324656 (последняя) - person David Magalhães; 10.04.2019
comment
Этот ответ был нам очень полезен. Спасибо! Что конкретно нам удалось сделать, так это добавить следующую строку в наш nginx-config на сервере: proxy_force_ranges on; - person TamRock; 03.06.2019
comment
@ DavidMagalhães В моем случае после 1-го 0-1 2-й запрос всегда отправляет диапазон полной длины: например, 0-116324656. И это вызывает замедление воспроизведения, потому что серверу нужно время, чтобы вернуть полные данные. Подобная вещь обсуждается в stackoverflow.com/questions/18058011/ - person user1783732; 15.11.2019