HTML-код для встраивания видео
Вставить видео на страницу — это не одна строчка HTML, как кажется. Этот гайд разбирает три схемы встраивания, которые реально нужны на практике: обычный плеер, автозапускающийся фоновый ролик и клип с отложенной загрузкой — с готовым кодом для каждой. Или просто перетащите файл в TinyVid — он напишет все три за вас.
HTML-элемент video
Чтобы встроить видео в HTML, хватает нативного тега video — без библиотек, без iframe, без стороннего плеера. В простейшем виде он оборачивает одну или несколько строк source, каждая указывает на файл и его тип, а браузер проигрывает первую, которую поддерживает.
Задайте видео явные width и height или CSS-пропорции, чтобы браузер заранее занял место и страница не прыгала при загрузке. Добавьте картинку poster для кадра до старта воспроизведения и атрибут controls для обычного плеера. Всё остальное — autoplay, зацикливание, отложенная загрузка — лишь вариации на этих нескольких атрибутах.
Три способа встроить видео
Почти любое встраивание видео на вебе — это одна из трёх схем, и все три есть в TinyVid как пресеты. В каждом уже вписаны нужные кодеки, запасной источник и реальные размеры вашего видео, а дальше вы включаете автозапуск, зацикливание, элементы управления или обложку — пока код не подойдёт вашей странице.
Обычный плеер
Плеер с видимыми элементами управления, постером и прогрессивной загрузкой. Это вариант по умолчанию для любого видео, которое посетитель смотрит осознанно, — туториала, демо продукта, доклада. Поставьте современный лёгкий файл первым, H.264 MP4 последним, чтобы каждый браузер нашёл source, который сможет проиграть, и задайте preload в metadata, чтобы ролик грузился только после нажатия play.
<video poster="poster.jpg" width="1280" height="720" controls preload="metadata" style="max-width:100%;height:auto">
<source src="video.webm" type="video/webm">
<source src="video.mp4" type="video/mp4">
</video>Фоновое видео
Беззвучный зацикленный ролик, который сам запускается за шапкой сайта или крупной секцией. Автозапуск браузеры разрешают только без звука, поэтому здесь сочетаются атрибуты muted, autoplay, loop и playsinline, а object-fit растягивает видео на всю область. Держите его коротким и сильно сжатым — он грузится у каждого посетителя, так что беззвучный пресет Фоновое видео тут в самый раз.
<video poster="poster.jpg" autoplay loop muted playsinline style="width:100%;height:100%;object-fit:cover">
<source src="video.webm" type="video/webm">
<source src="video.mp4" type="video/mp4">
</video>Lazy-load
Ролик, который скачивается только при попадании в зону видимости и не мешает критическому пути загрузки. Его адрес лежит в data-атрибуте и подставляется небольшим скриптом на IntersectionObserver, как только элемент подходит к области просмотра. Это самый щадящий вариант для страниц с несколькими видео, где загрузка их всех сразу убила бы производительность.
<video class="lazy-video" poster="poster.jpg" width="1280" height="720" data-src="video.mp4" loop muted playsinline preload="none" style="max-width:100%;height:auto"></video>
<!-- IntersectionObserver swaps data-src → src on view -->Сгенерируйте свой embed-код
Перетащите видео ниже. TinyVid сконвертирует его в оптимизированные для веба форматы и откроет генератор: выберите пресет, включите нужные опции и скопируйте код, в котором уже стоят настоящие ширина и высота вашего видео — страница заранее резервирует под него место, и при загрузке ничего не прыгает. Бесплатно до 200 МБ, без аккаунта.
Перетащите видео сюда
Атрибуты и лучшие практики
Почти всю работу делает горстка атрибутов. poster даёт плееру первый кадр; preload в значении metadata — или none для отложенных клипов — не даёт браузеру тянуть видео раньше времени; width и height или пропорции спасают от сдвига вёрстки. Чтобы автозапуск сработал, видео должно быть беззвучным, а playsinline не даёт iOS разворачивать его на весь экран.
Дайте больше одного source. WebM или AV1 первым, H.264 MP4 последним: современные браузеры возьмут лёгкий файл, а старые плавно откатятся — браузер берёт первый тип, который умеет декодировать. Если указать кодеки в type каждого source, он выберет нужный, ничего не скачивая.
Не забывайте про доступность. Добавьте элемент track с субтитрами для речи и никогда не полагайтесь на один лишь автозапуск, чтобы донести смысл. Беззвучный фоновый ролик должен быть чисто декоративным — всё, что посетителю важно услышать, место в обычном плеере, которым он управляет.
Атрибуты тега video — кратко
Все атрибуты, которые вам скорее всего понадобятся на элементе video, и когда они уместны.
| Атрибут | Что делает |
|---|---|
| controls | Показывает штатные органы управления браузера: воспроизведение, паузу, громкость и полосу перемотки. Ставьте на любое видео, которым посетитель должен управлять; опускайте только на декоративных фоновых роликах. |
| poster | Картинка, которая показывается до начала воспроизведения. Без неё плеер стоит пустым или вслепую берёт первый кадр, так что именно постер не даёт блоку выглядеть сломанным, пока видео грузится. |
| preload | Сколько браузер тянет заранее: metadata читает только размеры и длительность, none откладывает всё до запуска, auto разрешает скачать файл. Для большинства плееров берите metadata, ниже первого экрана — none. |
| autoplay | Запускает воспроизведение без клика. Браузеры соглашаются только на немом видео, поэтому идёт в паре с muted — и уместен на декоративных роликах, а не на контенте, который человек должен выбрать сам. |
| muted | Отключает звук при воспроизведении. Без него автозапуск не сработает. Если ролик вообще не должен звучать, уберите звуковую дорожку из самого файла, а не полагайтесь на атрибут. |
| loop | Перезапускает ролик по окончании. Естественно для коротких фоновых петель и раздражает на всём, где есть закадровый голос. |
| playsinline | Оставляет видео внутри страницы на iOS вместо переброса в нативный полноэкранный плеер. Обязателен для фоновых роликов на iPhone. |
| width / height | Резервируют место под плеер до прихода файла, чтобы страницу не дёргало при загрузке, — разница между аккуратной вёрсткой и штрафом за Cumulative Layout Shift. Тот же эффект отзывчиво даёт aspect-ratio в CSS. |
| <source> | Позволяет предложить несколько файлов: браузер берёт первый type, который умеет декодировать. Ставьте первым современный лёгкий файл (WebM или AV1), а H.264 MP4 — последним, как универсальный запасной. |
| <track> | Подключает субтитры файлом WebVTT. Добавляйте везде, где есть речь: это базовый уровень доступности, и заодно контент становится доступен поиску. |
Embed работает ровно настолько быстро, насколько лёгок файл за ним. Сначала уменьшите его с помощью гайда по сжатию видео для веба.