Получите Safari, чтобы предпочесть HEVC в видеотеге HTML 5

В настоящее время я изучаю возможность добавления поддержки HEVC в видео, но у меня возникла проблема с Safari. Вот образец источника:

<video autobuffer="true" autoloop="" loop="" controls="">
    <source src="film_WebM.webm" type="video/webm">
    <source src="film_HEVC.mp4" type="video/mp4">
    <source src="film.mp4" type="video/mp4">
</video>

В идеале браузер должен читать исходные коды и использовать первый файл, который, по его мнению, он может прочитать, и это должно позволить Firefox и Chromium показывать фильм VP9, ​​Safari - HEVC, а Internet Explorer - H264. Однако Safari плохо работает и проигнорирует фильм HEVC, если присутствует H264. Я пробовал аннотировать источник информацией о кодеке, но это не помогает. Установка HEVC в качестве источника по умолчанию для элемента видео работает для Safari, но вызывает проблемы для всех остальных браузеров.

Есть ли способ решить эту проблему без использования функции обнаружения функций для управления элементом src?

Подано в Apple как ошибка Safari # 37821806

Приведенное ниже обсуждение предполагает, что Safari, несмотря на собственные примечания к выпуску Apple, может решить использовать источник AVC, исходя из соображений аппаратного обеспечения. Неясно, как ему удается это сделать без подсказки кодека или явного сниффинга типа mime. Было бы полезно, если бы люди могли протестировать демонстрацию кода и отметить в комментариях, какой кодек воспроизводит и оборудование Mac Информация.


person Charlie Clark    schedule 21.02.2018    source источник


Ответы (1)


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

Убедившись, что видео HEVC совместимо с Safari, дайте браузеру подсказку о кодеках, используя свойство type в тегах source. Пока вы только говорите браузеру, что контейнер MP4 используется как для HEVC, так и для источника H.264. Браузеры должны будут загружать части файлов, чтобы выяснить, какие из файлов совместимы, обычно в порядке тегов source.

Вы можете / должны указать подробную информацию обо всех используемых кодеках, включая видеокодек, а также аудиокодеки, если речь идет о звуке.

  • avc1 означает H.264
  • hvc1 означает H.265 (HEVC).

Для вашего примера самая короткая версия будет такой:

<video>
    <source src="film_WebM.webm" type="video/webm">
    <source src="film_HEVC.mp4" type='video/mp4; codecs="hvc1"'>
    <source src="film.mp4" type='video/mp4; codecs="avc1"'>
</video>

См. Также: Демо на CodePen и статья

Обновлять

Благодаря вашим отзывам в комментариях, я думаю, что понял, что происходит: Safari, похоже, рассматривает ваше оборудование, чтобы выбрать лучший источник видео, что на самом деле довольно умно. Аппаратная поддержка H.264 широко доступна даже на старом оборудовании, тогда как аппаратная поддержка HEVC / H.265 отсутствует и требует большего количества ЦП и, в конечном итоге, также потребует больше энергии (батареи).

Таким образом, хотя ваше устройство (например, MBP) и программное обеспечение могут декодировать и воспроизводить видео HEVC, Safari может предпочесть источник видео H.264, если он доступен.

Сделал еще несколько тестов:

  • iMac, конец 2014 г. (5K): ✅ HEVC
  • iPhone X (бета-версия iOS 12): ✅ HEVC
  • iPhone 7 Plus (iOS 11): ✅ HEVC
  • старый iPad Air (iOS 11): ⚠️ предпочитает H.264, но будет воспроизводить видео HEVC, если исходный код H.264 недоступен
person Nick    schedule 12.08.2018
comment
Да, HEVC отлично работает в Safari, пока AVC нет в списке источников. Добавление подсказок кодеков не помогло, что говорит о том, что это ошибка Safari. - person Charlie Clark; 13.08.2018
comment
У меня он отлично работает в Safari версии 11.1.2 + High Sierra с помощью метода, описанного выше. - person Nick; 13.08.2018
comment
У меня здесь Safari 11.1.2, и он не работает, когда я проверяю действительный URL-адрес воспроизводимого фильма. Только если я удалю исходный код h264, Safari воспроизведет фильм HEVC. - person Charlie Clark; 13.08.2018
comment
Я добавил ссылку на демо-ссылку CodePen выше. Вы можете посмотреть видео HEVC в Safari? Я могу. - person Nick; 14.08.2018
comment
Спасибо за ссылку, но на моем компьютере она не работает. Обнаружение функций также вызывает негатив, но Safari с радостью воспроизведет файл HEVC: cloudunder.io/staticfiles /hevcdemo/hevc.mp4. Изменение определения кодека на codecs=hevc приносит "возможно". - person Charlie Clark; 15.08.2018
comment
Это действительно странно. Какую версию ОС вы используете? Я использую macOS High Sierra (10.13.6). Кстати, не обманывайтесь результатом maybe при проверке на codecs=hevc - maybe означает только то, что я не знаю, смогу ли я воспроизвести это, мне придется загрузить файл и выяснить. Вы можете получить такой же результат проверки для codecs=charlie. - person Nick; 15.08.2018
comment
У меня High Sierra на MBP 2015. Так что да, это действительно странно. Сообщается, что Firefox, возможно, поддерживает WebM при воспроизведении файла, что в основном подтверждает, что обнаружение функции не работает. - person Charlie Clark; 15.08.2018
comment
Я сделал еще несколько тестов и, кажется, разобрался. См. Обновленный ответ. - person Nick; 15.08.2018
comment
Я думал в этом направлении, но они идут вразрез с примечаниями к выпуску High Sierra. Аппаратная поддержка декодирования должна быть в процессорах 2015 года. Без доступа к аппаратной ферме вроде как сложно тестировать. - person Charlie Clark; 15.08.2018
comment
У моего iMac Late 2014 определенно нет аппаратной поддержки, но есть четырехъядерный процессор Intel i7 с тактовой частотой 4 ГГц (и это также не устройство с резервным питанием от батареи). Я очень уверен, что разница заключается в оборудовании, а не в тегах source, т.е. вы не делаете ничего плохого, и это также не кажется ошибкой. Я скоро протестирую на некоторых более старых iMac. - person Nick; 15.08.2018
comment
Согласно собственным документам Intel, Iris 5500 определенно выполняет community.intel.com/thread/59216. бит можно перевернуть в зависимости от наличия питания. - person Charlie Clark; 15.08.2018
comment
Также обратите внимание, что Safari предпочитает исходный код MP4-h264 даже без подсказки кодека. Это волшебство ™. - person Charlie Clark; 15.08.2018
comment
Может быть, в вашем Safari уже были кешированы видеофайлы? Без подсказок кодеков (codepen.io/cloudunder/pen/BPgzaq) я могу наблюдать за Safari на моем старый iPad загружает все видео по одному в порядке исходных тегов через вкладку сети инспектора. - person Nick; 16.08.2018
comment
Я тестировал с пустым кешем. На самом деле Apple нужна некоторая ясность по этому поводу, иначе мы просто предполагаем. - person Charlie Clark; 16.08.2018
comment
Обнаружение функции кажется нестабильным. Вы видели это? cconcolato.github.io/media-mime-support - person Charlie Clark; 24.08.2018