it-roy-ru.com

Safari 9.0 не может воспроизводить видео mp4 на сервере хранения

Следующая ссылка на видео не может быть воспроизведена с Safari 9.0 (последняя версия). Но старые версии safari, chrome и ​​firefox могут играть.

http://assets00.grou.ps/0F2E3C/wysiwyg_files/Videos/saksuka/20150928104628-lhmkkfbhnkiisbhht.mp4

Я могу играть с Safari 9.0, когда загружаю видео с сервера на мой компьютер.

Вот почему я не думаю, что эта проблема связана с кодированием видео.

Я сделал эти настройки;

mime.types
video/mp4   mp4 m4v
video/ogg   ogv
video/webm  webm

httpd.conf
AddType video/mp4 mp4 m4v
AddType video/ogg ogv
AddType video/webm webm

.htaccess
AddType video/mp4 mp4 m4v
AddType video/ogg ogv
AddType video/webm webm
7
Mehmet

Кажется, это повторяющаяся проблема с некоторыми файлами mp4 в Safari.

Я протестировал ваше видео на статическом сервере localhost node.js, и в Safari оно воспроизводилось нормально, а это значит, что само видео должно быть в порядке.

Если вы посмотрите на веб-инспектора в Safari, вы увидите, что веб-запрос не включает некоторые заголовки. Это вызывает некоторые проблемы с серверами, и они не отвечают так, как ожидает Safari, или не отвечают вообще.

Вы можете увидеть подобные проблемы, которые обсуждались (вторая проблема не в вашем случае, я думаю, но иллюстрирует, что информация, включенная в запрос, отправленный на сервер, может заставить сервер "решить" не отвечать так, как вы хотите):

Update :

Использование wireshark для захвата запроса от Chrome позволяет увидеть ответ сервера с воспроизведением видео, в то время как запрос от Safari (на той же машине) не дает ответа от сервера.

Как правило, запросы похожи, и оба содержат заголовок реферера. Браузер Safari сначала запрашивает только первые 2 байта, которые он возвращает с сервера - он делает это с помощью заголовка 'range', который используется для указания диапазона байтов, который возвращает файл:

  • Диапазон: байты = 0-1\r\n

Chrome, с другой стороны, запрашивает все видео в своем запросе диапазона:

  • Диапазон: байты = 0-\r\n

Однако использование инструмента HTTP (например, "Почтальон") в Chrome и ​​изменение диапазона на 0-1, похоже, не останавливает ответ сервера в случае Chrome. Фактически, использование инструмента для установки, насколько возможно, всех тех же заголовков, что и наборы Safari, похоже, все еще возвращает видео нормально.

6
Mick

Чтобы пролить больше света на mp4s, которые не воспроизводятся в теге video, я хотел бы поделиться своим опытом здесь. Недавно я потратил много времени на устранение проблемы, из-за которой mp4s не воспроизводились в Safari.

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

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

Safari Network Tab Service Workers

1
My Stack Overfloweth

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

0
mr.b