В Хроме не работает атрибут loop тега video

Рейтинг: 1Ответов: 1Опубликовано: 17.04.2015

Появилась цель - написать видео-фон, не используя js, - и я реализовал это так:

<video src="url" autoplay="autoplay" loop="loop"></video>

Но проблема в том, что я пользователь Ubuntu и соответственно пишу с неё и работает во всех браузерах но в Chromium (ubuntu) не работает loop и сам вопрос в том, как правильно и/или кроссбраузерно написать loop для всех браузеров на всех ОС?

Ответы

▲ 1Принят

В Хроме цикличное воспроизведение (и вообще любая перемотка) работает, только если сервер поддерживает запросы по частям, то есть понимает заголовок Range и отвечает на него 206 Partial Content. Это верно даже для мелких видео, которые полностью помещаются в памяти — никаких исключений, сервер обязан поддерживать Range.

Как вариант, можно городить костыли:

$('video').on('ended', function () {
  this.load();
  this.play();
});

См. Google Chrome - HTML5 video will not loop.

Если сервер поддерживает Range, то всё нормально работает:

<video src="http://www.w3schools.com/html/mov_bbb.mp4" autoplay="" loop=""></video>

Хром может не дружить с локальными файлами и считать, что "сервер" не поддерживает Range. Но, так как обычно даже разработка ведётся с помощью сервера, а не локальных файлов, то проблема малоактуальна.