У меня возникли проблемы с Safari и элементом <video>
в сочетании с более короткими высококачественными видео. Для веб-сайта витрины я загружаю 12-15 секунд .mp4
и .webm
файлов в контейнер <video>
с использованием элемента <source>
. При попытке воспроизведения видео в Chrome он работает безупречно, и видео начинает играть почти мгновенно, но Safari, похоже, хочет полностью загрузить видео до начала воспроизведения.Принудительное воспроизведение коротких видео HTML5 в Safari
Я искал загрузку видео непосредственно через атрибут src
<video>
, а также добавил атрибут preload="auto"
в попытке принудительного немедленного воспроизведения.
Я настроил пример, используя один из видео, которые мы используем на веб-сайтах, что составляет около 8 МБ и длиной 12 секунд: https://jsfiddle.net/n1eac46v/
var video = document.getElementById('video');
var source = document.createElement('source');
source.src = "foo.mp4";
source.type = "video/mp4";
video.appendChild(source);
video.on("canplay canplaythrough", video.play);
Как вы можете видеть, я также прослушивание canplay
и события canplaythrough
, но даже это не помогает. Я смотрел повсюду в течение нескольких дней подряд, но сейчас у меня заканчиваются варианты.
Спасибо за ваш ответ! Хотя MP4Box недоступен для OSX так же легко, ваш ответ взял меня в правильном направлении. Я решил использовать [этот ответ] (http://stackoverflow.com/a/28512437/3840022) по соответствующему вопросу, чтобы решить проблему, используя только FFMPEG. './ffmpeg -i top.mp4 -codec copy -movflags faststart top-fs.mp4' Это перемещает флаги спереди, как вы упомянули, и решает проблему, даже для более коротких видеороликов! – Thomas
@ Томас - правда, я забыл про FFmpeg :) Рад, что это сработало. Забавно, это первый раз, когда я принимаю с -1: D –