Видео, как элемент дизайна на сайте

Дмитрий Корнев
5 декабря 2019

Речь о видео, которое необходимо разместить на сайте в виде фона, баннера, слайда карусели.

Такое видео размещается на сайте с помощью тега video. Пример:

<video preload="auto" muted playsinline autoplay="autoplay" loop="loop">
    <source src="/dir/video.mp4" type="video/mp4" />
    <source src="/dir/video.webm" type="video/webm" />
    <source src="/dir/video.ogv" type="video/ogv" />
</video>

Это один блок с несколькими форматами одного и того же видео. Воспроизведено будет лишь одно из них. Какое именно — это решает веб-браузер. Некоторые устройства и некоторые браузеры имеют очень ограниченную поддержку форматов, поэтому важно предложить несколько.

Похоже, что старые мобильные Apple-устройства умеют воспроизводить только mp4. Для подавляющего большинства остальных браузеров лучшим является webm. Поэтому, желательно хотябы эти два формата.

Полезная табличка сравнения поддерживаемых браузерами форматов.

Самый важный параметр для всех видео — это их размер и этим определяется все остальное.

Чем меньше размер тем лучше. Но слишком маленький — это короткое видео и плохое качество. Поэтому подход индивидуален. Оценивайте исходя из того, как размещается видео, какого рода сайт, кто посетители, сколько они готовы тратить времени на ожидание загрузки, с каких устройств смотрят больше и т.д.

Для уменьшения размера:

На что еще стоит обратить внимание при подготовке видео:

Пример вставки видео в слайдере Bootstrap 4:

<div id="carouselExampleIndicators" class="carousel slide" data-ride="carousel">
    <ol class="carousel-indicators">
        <li data-target="#carouselExampleIndicators" data-slide-to="0" class="active"></li>
        <li data-target="#carouselExampleIndicators" data-slide-to="1"></li>
        <li data-target="#carouselExampleIndicators" data-slide-to="2"></li>
    </ol>
    <div class="carousel-inner">
        <div class="carousel-item active">
            <div class="carousel-video">
                <video preload="auto" muted playsinline autoplay="autoplay" loop="loop">
                    <source src="/dir/video.mp4" type="video/mp4" />
                    <source src="/dir/video.webm" type="video/webm" />
                </video>
            </div>
        </div>
        <div class="carousel-item">
        <img src="..." class="d-block w-100" alt="...">
        </div>
        <div class="carousel-item">
        <img src="..." class="d-block w-100" alt="...">
        </div>
    </div>
    <a class="carousel-control-prev" href="#carouselExampleIndicators" role="button" data-slide="prev">
        <span class="carousel-control-prev-icon" aria-hidden="true"></span>
        <span class="sr-only">Previous</span>
    </a>
    <a class="carousel-control-next" href="#carouselExampleIndicators" role="button" data-slide="next">
        <span class="carousel-control-next-icon" aria-hidden="true"></span>
        <span class="sr-only">Next</span>
    </a>
</div>

Стилями надо обеспечить для видео-слайда нужный размер, пример в scss:

.carousel-video {
    position: relative;
    // height: ... или какое-то другое решение.

    video {
        position: absolute;
        left: 0;
        min-width: 100%;
        min-height: 100%;
        top: 50%;
        transform: translateY(-50%);
    }
}

В Bootstrap 4 размер слайдера определяется размером используемых изображений. Соответственно для слайда с видео надо что-то придумать. Можно тупо задать высоту (пример выше). Другое решение — это например еще одно изображение, размещенное слоем, которое будет под видео. Этот вариант интересен еще и тем, что изображение будет показано, пока не загрузилось видео.

Комментарии