Вы правильно подготовили видеофайл для публикации в интернете. Вы задали правильные размеры и разрешение. Вы даже создали отдельные файлы WebM и MP4 для разных браузеров.
Чтобы видео стало доступно пользователям, его нужно добавить на веб-страницу. Для этого нужно добавить два элемента HTML: <video> и <source>. В этой статье мы расскажем не только о самих тегах, но и об атрибутах, которые нужно в них добавить, чтобы сделать сайт удобным для пользователей.
Укажите один файл
Хотя это и не рекомендуется, вы можете использовать элемент video отдельно. Всегда используйте атрибут type, как показано ниже. Браузер использует это, чтобы определить,
может ли он воспроизвести предоставленный видеофайл. Если это невозможно, показывается текст, заключенный в тег.
<video src="chrome.webm" type="video/webm">
<p>Your browser cannot play the provided video file.</p>
</video>
Укажите несколько форматов файлов
Как мы уже говорили в статье Основные сведения о медиафайлах, не все браузеры поддерживают одни и те же форматы видео. Элемент <source> позволяет указать несколько форматов на случай, если браузер пользователя не поддерживает один из них.
В примере ниже показано, как встроить видео, которое используется в качестве примера далее в этой статье.
<video controls>
<source src="chrome.webm" type="video/webm">
<source src="chrome.mp4" type="video/mp4">
<p>Your browser cannot play the provided video file.</p>
</video>
В теги <source> всегда следует добавлять атрибут type, хотя он и не является обязательным. Это гарантирует, что браузер скачает только тот файл, который сможет воспроизвести.
У этого подхода есть несколько преимуществ по сравнению с использованием разных HTML-кодов или серверных скриптов, особенно на мобильных устройствах:
- Вы можете указать форматы в порядке предпочтения.
- Клиентское переключение сокращает задержку; для получения контента отправляется только один запрос.
- Предоставить выбор формата браузеру проще, быстрее и, возможно, надежнее, чем использовать базу данных поддержки на стороне сервера с обнаружением агента пользователя.
- Указание типа каждого источника файла повышает производительность сети; браузер может выбрать источник видео без необходимости загружать часть видео, чтобы "проверить" формат.
Это особенно важно для мобильных устройств, где пропускная способность и задержка имеют решающее значение, а терпение пользователя может быть ограничено. Если атрибут type не указан, это может повлиять на производительность, когда есть несколько источников с неподдерживаемыми типами.
Есть несколько способов получить подробные сведения. Чтобы узнать больше о том, как видео и аудио работают в интернете, ознакомьтесь с руководством по цифровым медиа для гиков. Вы также можете использовать удаленную отладку в DevTools, чтобы сравнить сетевую активность с атрибутами типа и без них.
Как отметить часть песни для тизера
Чтобы сэкономить трафик и сделать сайт более отзывчивым, используйте фрагменты медиафайлов, чтобы добавить время начала и окончания для элемента видео.
Чтобы использовать медиафрагмент, добавьте #t=[start_time][,end_time] к URL медиафайла. Например, чтобы воспроизвести видео с 5-й по 10-ю секунду, укажите:
<source src="chrome.webm#t=5,10" type="video/webm">
Вы также можете указать время в <hours>:<minutes>:<seconds>. Например, #t=00:01:05 – видео начнется с 1 минуты 5 секунд. Чтобы воспроизвести только первую минуту видео, укажите #t=,00:01:00.
Эта функция позволяет показывать несколько представлений одного и того же видео (например, временные точки на DVD) без необходимости кодировать и передавать несколько файлов.
Чтобы эта функция работала, ваш сервер должен поддерживать запросы диапазона и эта возможность должна быть включена. На большинстве серверов запросы диапазона включены по умолчанию. Поскольку некоторые хостинги отключают их, убедитесь, что запросы диапазона доступны для использования фрагментов на вашем сайте.
К счастью, это можно сделать в инструментах разработчика в браузере. Например, в Chrome он находится на панели "Сеть". Найдите заголовок Accept-Ranges и убедитесь, что в нем указано bytes. На изображении я обвел этот заголовок красной рамкой. Если вы не видите значение bytes, обратитесь к своему хостинг-провайдеру.
Добавьте постер
Добавьте атрибут poster в элемент video, чтобы зрители могли получить представление о контенте сразу после загрузки элемента, не скачивая видео и не запуская воспроизведение.
<video poster="poster.jpg" ...>
…
</video>
Постер также может использоваться в качестве резервного изображения, если видео src повреждено или ни один из предоставленных форматов видео не поддерживается. Единственный недостаток изображений-постеров – это дополнительный запрос файла, который потребляет некоторую пропускную способность и требует рендеринга.
Подробнее об эффективном кодировании изображений…
Убедитесь, что видео не выходит за пределы контейнеров
Если видеоэлементы слишком велики для области просмотра, они могут выходить за пределы контейнера, из-за чего пользователь не сможет увидеть контент или воспользоваться элементами управления.
Размеры видео можно задавать с помощью CSS. Если CSS не отвечает всем вашим требованиям, можно использовать библиотеки JavaScript и плагины, например FitVids, в том числе для видео с YouTube и других источников. К сожалению, эти ресурсы могут увеличить объем полезной нагрузки сети, что негативно скажется на ваших доходах и кошельках пользователей.
Для простых случаев, подобных описанным здесь, используйте запросы медиа CSS, чтобы задать размер элементов в зависимости от размеров области просмотра. В этом вам поможет max-width:
100%.
Для медиаконтента в окнах iframe (например, видео YouTube) попробуйте использовать адаптивный подход (например, предложенный Джоном Сурдаковски).
CSS
.video-container {
position: relative;
padding-bottom: 56.25%;
padding-top: 0;
height: 0;
overflow: hidden;
}
.video-container iframe,
.video-container object,
.video-container embed {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
HTML
<div class="video-container">
<iframe
src="//www.youtube.com/embed/l-BA9Ee2XuM"
frameborder="0"
width="560"
height="315"
></iframe>
</div>
Сравните адаптивный пример с неадаптивной версией. Как видите, неадаптивная версия не очень удобна для пользователя.
Положение устройства
Ориентация устройства не имеет значения для мониторов компьютеров или ноутбуков, но она чрезвычайно важна при разработке веб-страниц для мобильных устройств и планшетов.
Safari на iPhone хорошо справляется с переключением между портретной и альбомной ориентацией:
На iPad и в Chrome на Android могут возникать проблемы с ориентацией устройства. Например, без настроек видео, воспроизводимое на iPad в альбомной ориентации, выглядит следующим образом:
Задав для видео свойство width: 100% или max-width: 100% с помощью CSS, можно решить многие проблемы с макетом, связанные с ориентацией устройства.
Автовоспроизведение
Атрибут autoplay определяет, будет ли браузер скачивать и воспроизводить видео сразу. Точный принцип работы зависит от платформы и браузера.
Chrome: зависит от нескольких факторов, включая, помимо прочего, то, выполняется ли просмотр на компьютере и добавил ли мобильный пользователь ваш сайт или приложение на главный экран. Подробнее о рекомендациях по автовоспроизведению…
Firefox: блокирует все видео и аудио, но позволяет пользователям смягчить эти ограничения для всех или отдельных сайтов. Подробнее о том, как разрешить или заблокировать автовоспроизведение медиаконтента в Firefox…
Safari: ранее требовался жест пользователя, но в последних версиях это требование было смягчено. Подробную информацию можно найти в статье Новые правила для тега <video> в iOS.
Даже на платформах, где автовоспроизведение возможно, нужно подумать, стоит ли его включать.
- Передача данных может быть дорогой.
- Воспроизведение медиафайлов до того, как пользователь захочет этого, может занять пропускную способность и ЦП, и тем самым задержать отрисовку страницы.
- Пользователи могут находиться в ситуации, когда воспроизведение видео или аудио неуместно.
Предварительная загрузка
Атрибут preload указывает браузеру, сколько информации или контента нужно предварительно загрузить.
| Значение | Описание |
|---|---|
none |
Пользователь может отказаться от просмотра видео, поэтому не загружайте ничего заранее. |
metadata |
Метаданные (продолжительность, размеры, текстовые дорожки) должны быть загружены заранее, но с минимальным количеством видео. |
auto |
Скачивание всего видео сразу считается желательным. Пустая строка дает тот же результат. |
Атрибут preload по-разному влияет на разные платформы.
Например, Chrome буферизует 25 секунд видео на компьютере, но не делает этого на устройствах iOS и Android. Это означает, что на мобильных устройствах могут возникать задержки при запуске воспроизведения, которых нет на компьютерах. Подробнее об этом рассказывается в статье Быстрое воспроизведение с предварительной загрузкой аудио и видео и в блоге Стива Саудерса.
Теперь, когда вы знаете, как добавлять медиафайлы на веб-страницу, пришло время узнать о доступности медиафайлов, где вы добавите субтитры к своему видео для слабослышащих или когда воспроизведение аудио невозможно.