Видео и аудио в HTML: теги video, audio и source

Видео и звук на странице - это не файл, который сам себя проигрывает, а теги <video> и <audio> с набором атрибутов, от которых зависит, покажется ли вообще панель управления и что произойдёт, если браузер не понимает формат файла.

Нажми play у видео и у аудио - оба реально проигрываются прямо в примере. Попробуй убрать controls у любого из них - без атрибута панель управления пропадёт.

Тег video: controls и poster

Тег <video> сам по себе не показывает никакой панели - без атрибута controls нет ни кнопки play, ни громкости, ни перемотки. Атрибут poster задаёт картинку-превью, которая показывается до того, как видео начнёт проигрываться - полезно, если не хочется показывать чёрный экран или первый случайный кадр.

<video controls poster="/images/prevyu.jpg" width="640" height="360"><source src="/video/urok.mp4" type="video/mp4"></video> - панель управления есть, превью тоже.

<video poster="/images/prevyu.jpg" width="640" height="360"><source src="/video/urok.mp4" type="video/mp4"></video> - без controls играть и останавливать видео нечем.

Тег audio

Тег <audio> устроен так же, как video, но без изображения - только звук. Атрибут controls нужен по той же причине: без него не появится ни одной кнопки, и до файла не добраться иначе как через код.

<audio controls><source src="/audio/urok.mp3" type="audio/mpeg"></audio> - панель управления показана, звук можно включить и поставить на паузу.

<audio><source src="/audio/urok.mp3" type="audio/mpeg"></audio> - без controls элемент никак не показан и не управляется.

Несколько source - для разных форматов

Один и тот же ролик можно сохранить в разных форматах - и не каждый браузер понимает каждый формат. Поэтому вместо одного адреса в атрибуте src у video и audio часто перечисляют несколько вложенных тегов <source> с разными файлами: браузер сам проверяет их по порядку и использует первый, который умеет воспроизвести.

<video controls><source src="/video/urok.webm" type="video/webm"><source src="/video/urok.mp4" type="video/mp4"></video> - если браузер не поддерживает webm, он попробует mp4.

<video controls src="/video/urok.webm"></video> - только один формат: в браузере без поддержки webm видео просто не запустится, и запасного варианта нет.

Из истории В 2009 году рабочая группа WHATWG не смогла договориться об одном обязательном формате видео для HTML5: лицензионный H.264 был широко распространён, но платный, а royalty-free Ogg Theora на тот момент вызывал опасения из-за возможных непроверенных патентов. Единый формат так и не выбрали - вместо этого в HTML5 закрепили несколько тегов source, из которых браузер выбирает первый подходящий сам.

Частые ошибки новичков

ОшибкаЧто происходитКак исправить
Забывать атрибут controls Нет ни одной кнопки - управлять проигрыванием нечем Указывать controls всегда, если плеер должен быть управляемым
Рассчитывать на автовоспроизведение со звуком Современные браузеры блокируют автовоспроизведение со звуком без действия пользователя на сайте Использовать autoplay вместе с muted, если автозапуск действительно нужен
Указывать только один source В браузере без поддержки этого формата ничего не воспроизведётся, запасного варианта нет Добавлять несколько source с разными форматами - браузер выберет подходящий
Задавать src прямо у video или audio вместо source, когда нужно несколько форматов У video/audio можно указать только один src - для нескольких форматов места нет Использовать вложенные теги source для каждого варианта формата

Шпаргалка

ТерминЗначение
videoТег для показа видео
audioТег для звука без изображения
controlsПоказывает панель управления - play, пауза, громкость
posterКартинка-превью для video до начала проигрывания
source (несколько)Разные форматы одного файла - браузер выбирает первый поддерживаемый

Коротко: отвечаем на вопросы

Что делает атрибут controls и почему без него плеер не работает?

controls добавляет панель управления: play, пауза, громкость, перемотку. Без этого атрибута ни video, ни audio не показывают ни одной кнопки - управлять проигрыванием можно только через код, обычному читателю страницы такой плеер бесполезен.

Почему видео с автовоспроизведением иногда проигрывается без звука?

Современные браузеры блокируют автовоспроизведение со звуком, пока человек не провзаимодействовал с сайтом - это защита от навязчивых автоплеев. Автовоспроизведение с приглушённым звуком (атрибут muted) разрешено всегда, поэтому сайты часто запускают видео без звука и дают отдельную кнопку «включить звук».

Зачем нужно несколько тегов source вместо одного src?

Единого обязательного формата видео для HTML5 не существует - в 2009 году не удалось договориться из-за лицензий и патентных рисков разных форматов. Поэтому файл сохраняют в нескольких форматах и перечисляют их через source: браузер сам выбирает первый, который умеет воспроизвести.

Категория
Поделиться в социальных сетях

Отправить комментарий

0 Комментарии

Отправить комментарий (0)

#buttons=(Хорошо) #days=(20)

Мы используем файлы cookie для улучшения работы сайта. Подробнее
Хорошо
×