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

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

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

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

9 ответов

Решение

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

Я решил это, добавив видеофайлы вне сервера BLOB-объектов в папку в проекте, а затем отрендерил их через сервер Apache, а не обслуживал их с помощью фактического сервера BLOB-объектов, который мы использовали. Надеюсь, это поможет.

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

вопрос

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

Исправление

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

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

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

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

Сервисная вкладка Safari Network

Добавьте следующую строку кода в свой .htaccess ( расположенный в корне вашей установки WordPress ):

      SetEnvIfNoCase Request_URI .(?:mp4)$ no-gzip dont-vary

На следующем снимке экрана показан новый полный файл .htaccess.

Ссылка: https://clickshepherd.com/blog/solved-elegant-themes-divi-and-cloudflare-mp4-media-error-formats-not-supported-or-sources-not-found/

Я увидел ошибку «Не удалось загрузить ресурс», и хотя это причина, по которой мои видео не воспроизводятся.

Оказалось, что в моих видео не хватало ярлык. А когда добавил - играют нормально.

В моем случае проблема была с видео H256 HEVC, но в вашем случае причиной могут быть другие проблемы с кодированием / тегами.

В моем случае проблема была исправлена ​​с помощью ffmpeg:

      ffmpeg -i input.mp4 -tag:v hvc1 -acodec copy -c:v copy -movflags faststart out.mp4

Решение Google Cloud Platform

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

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

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

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

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

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

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

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

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

У меня была такая же проблема, и ни одно из перечисленных решений мне не помогло. Я показывал на сайте видео сS3но они не игралиiOSи возникла проблема, указанная выше, но одно видео работало без проблем. Я попытался добавить-tag:v hvc1тоже, но это не сработало. Я сравнил оба видео через и обнаружил, что это проблема с кодировкой. Я создавал видео черезFFmpegи добавление-brand mp42при создании видео сработало.

Короче говоря, скорее всего, это связано с разным форматом кодирования, хотя оба типаvideo/mp4.

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

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

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

Другие вопросы по тегам