Не удалось загрузить ресурс, загруженную плагиновую нагрузку на iOS

Каждый раз, когда я пытаюсь просмотреть видеофайл на своем сервере, я получаю эту ошибку на iOS в Safari, Chrome.

Я использую сервер blob, а затем сервер Apache, поэтому я не уверен, в чем проблема. Однако, когда я использую только Apache, я получаю эту ошибку, но потом у меня тоже есть рендеринг видео.

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

Ответ 1

Решение этой проблемы - это просто работа. Причина того, что серверы blob не являются потоковыми серверами. устройства iOS ожидают, что видео появятся в небольших кусках. Так, например, потоковый сервер может это сделать. Тем не менее, blob-сервер просто передает видео как blob, который не является ожидаемым устройством iOS. Некоторые браузеры достаточно умен, чтобы справиться с этим, а другие нет.

То, как я решил это, заключается в том, чтобы добавить видеофайлы вне сервера blob в папку внутри проекта, а затем передать это через сервер Apache вместо того, чтобы обслуживать его через фактический сервер blob, который мы использовали. Надеюсь, это поможет.

Ответ 2

Мы получили подобную ошибку здесь. Я подумал, что это могло быть связано с потоковой передачей, поскольку наше видео размещалось в хранилище больших двоичных объектов в Azure. После настройки службы мультимедиа для потоковой передачи видео по-прежнему не работает. Оказывается, причиной ошибки для нас стал Safari, использующий Service Worker. Ниже приведено дальнейшее объяснение того, что мы нашли:

Safari сначала отправляет запрос диапазона байтов для тега Video, который ожидает ответ 206. Однако если вы используете работника службы, ответ возвращается с 200, и кажется, что Safari не знает, как с этим справиться. Наше решение заключалось в том, чтобы исключить использование Service Saver для Safari.

Мы нашли это, используя вкладку сети отладчика Safari на Macbook, чтобы устранить проблему, которую мы видели на iPad. Прикреплен скриншот для сравнения/ссылки. Левая вкладка показывает, как должен выглядеть вызов по умолчанию. На правой вкладке показано, что вы увидите, если используете Service Worker.

Safari Network Tab Service Workers

Ответ 3

В нашем случае мы создали шаблон URL-адресов для наших активов blob и затем установили заголовки на странице определения шаблона URL-адреса, которые отправили обратно тип mime 'video/mp4'. Это должно указывать браузеру обрабатывать двоичный поток как chunked, что, в свою очередь, означало, что нам не нужно было загружать все это, прежде чем он начал играть.

Ответ 4

Я также получал эту ошибку для некоторых видео mp4. Оказывается, это была не проблема сервера, а проблема с кодированием видео.

Выпуск

"Атом moov" должен быть размещен в начале видеофайла. Он служит оглавлением для видео. Этот "атом moov" необходимо сначала прочитать для потоковой передачи html, иначе он не будет воспроизводиться на некоторых устройствах.

Исправление

Чтобы исправить это, я использовал ручной тормоз для перекодирования моего видео. Включите веб-оптимизацию. Также может помочь включение нулевой скорости и быстрого декодирования (см. вкладку видео).

Ответ 5

@Шиме Видас, относительно:

Наше решение состояло в том, чтобы исключить использование сервисного работника для Safari.

Как указано в https://bugs.webkit.org/show_bug.cgi?id=184447, текущим обходным решением является использование Request.destination для обхода сервисных работников при загрузке носителей.

Ответ 6

Решение Google Cloud Platform

Эта проблема доставила мне много головной боли, поэтому я просто хотел добавить свое конкретное решение здесь, если кто-то еще столкнется с этим при развертывании в Google Cloud Platform.

При попытке загрузить видео MP4 в Safari я получил ту же ошибку:

"Не удалось загрузить ресурс, плагин обработал загрузку"

Что мешало воспроизвести видео.

Тем не менее, я хотел сохранить все в Google Cloud, поэтому создал хранилище для сайта и добавил туда видео.

Конечно, попытка получить видео с URL-адреса хранилища с основного сайта привела к ошибке CORS. К счастью, вы можете легко настроить CORS в сегментах хранения:

Настройка совместного использования ресурсов между источниками (CORS)

После того, как эта конфигурация была развернута, я смог получить и загрузить видео на сайт в Safari без ошибки "плагин загружен".