У меня есть базовая веб-страница, которая пытается загрузить видео 4K в теге HTML5:
https://s3.amazonaws.com/pvxtesting/4ktest/index.html
Это работает на настольном браузере Chrome, но не работает на мобильных устройствах Chrome (проверено на iPhone 8 и Nexus 9).
Нам удалось определить аналогично закодированное видео (такое же разрешение и скорость передачи), что более короткая продолжительность с размером файла 2 МБ начинает работать только на некоторых мобильных браузерах. Но видео с большей продолжительностью и большими размерами файлов, например, с 15 МБ, не загружается. Монитор сети показывает, что буферизация происходит до 1,4 МБ, но затем она внезапно останавливается без обновления HTML5 readyState. Обычно мы наблюдаем эту проблему для видео выше размера 1080p на мобильных браузерах.
У мобильных браузеров есть разрешение видео/битрейт для AVC? Если да, то как это определить во время выполнения?
Спецификация HTML5 учитывает только видеоформаты, а не размер файла. Для больших видеофайлов браузер может или не будет загружать его должным образом, если память ограничена. Вы можете проверить, поддерживается ли видеоформат через HTMLVideoElement::canPlayType
но даже это не возвращает гарантированные результаты, поскольку три возможных возвращаемых значения
Для огромных видеороликов вы можете рассмотреть возможность потоковой передачи их через websockets в <video>
. Это должно быть более надежным и дать вам больше контроля.