Spec-Zone.ru › HTML

<audio> Элемент HTML для встраивания аудио

Baseline Широко доступно *

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и во многих версиях браузеров. Она доступна в браузерах с июля 2015 года.

* Некоторые части этой функции могут поддерживаться в разной степени.

  • Подробнее
  • Полная таблица совместимости
  • Отправить отзыв
>

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

Попробуйте

<figure>
  <figcaption>Listen to the T-Rex:</figcaption>
  <audio controls src="/shared-assets/audio/t-rex-roar.mp3"></audio>
  <a href="/shared-assets/audio/t-rex-roar.mp3"> Download audio </a>
</figure>
figure {
  margin: 0;
}

В примере выше показано базовое использование элемента <audio>. Как и в случае с элементом <img>, мы указываем путь к мультимедиа, которое нужно встроить, в атрибуте src; можно добавить другие атрибуты, чтобы указать, например, нужно ли автоматически запускать воспроизведение и повторять его, показывать ли стандартные элементы управления аудио в браузере и т. д.

Содержимое между открывающим и закрывающим тегами <audio></audio> отображается как резервный вариант в браузерах, не поддерживающих этот элемент.

Атрибуты

Атрибуты этого элемента включают глобальные атрибуты.

autoplay

Логический атрибут: если он указан, воспроизведение аудио начнётся автоматически, как только это станет возможно, не дожидаясь полной загрузки аудиофайла.

Примечание: Сайты, на которых автоматически воспроизводится аудио (или видео со звуковой дорожкой), могут доставлять пользователям неудобства, поэтому по возможности этого следует избегать. Если вам необходимо автоматическое воспроизведение, сделайте его опциональным (пользователь должен включить его самостоятельно). Однако эта возможность может быть полезна при создании мультимедийных элементов, источник которых будет задан позднее под управлением пользователя. Дополнительные сведения о правильном использовании автоматического воспроизведения см. в нашем руководстве по автоматическому воспроизведению.

Примечание: Аудио с установленным атрибутом loading="lazy" не начнёт загружаться и воспроизводиться автоматически, пока элементы управления мультимедиа не окажутся рядом с областью просмотра или внутри неё. Аудио с отложенной загрузкой без атрибута controls не будет воспроизводиться автоматически.

controls

Если этот атрибут присутствует, браузер предложит элементы управления, с помощью которых пользователь сможет управлять воспроизведением аудио, в том числе регулировать громкость, перемещаться по записи и приостанавливать или возобновлять воспроизведение.

controlslist

Атрибут controlslist, если он указан, помогает браузеру выбрать элементы управления, которые следует показывать для элемента audio, когда браузер отображает собственный набор элементов управления (то есть когда указан атрибут controls).

Допустимые значения: nodownload, nofullscreen и noremoteplayback.

crossorigin

Этот перечисляемый атрибут указывает, следует ли использовать CORS для получения соответствующего аудиофайла. Ресурсы с поддержкой CORS можно использовать в элементе <canvas>, не делая его загрязнённым. Допустимые значения:

anonymous

Отправляет междоменный запрос без учётных данных. Иными словами, отправляет HTTP-заголовок Origin: без cookie, сертификата X.509 и без выполнения HTTP-аутентификации Basic. Если сервер не предоставляет учётные данные исходному сайту (не устанавливая HTTP-заголовок Access-Control-Allow-Origin:), ресурс будет загрязнён, а его использование — ограничено.

use-credentials

Отправляет междоменный запрос с учётными данными. Иными словами, отправляет HTTP-заголовок Origin: с cookie или сертификатом либо выполняет HTTP-аутентификацию Basic. Если сервер не предоставляет учётные данные исходному сайту (через HTTP-заголовок Access-Control-Allow-Credentials:), ресурс будет загрязнён, а его использование — ограничено.

Если атрибут отсутствует, ресурс загружается без CORS-запроса (то есть без отправки HTTP-заголовка Origin:), поэтому его нельзя использовать в элементах <canvas> без загрязнения. Если значение недопустимо, оно обрабатывается так, как если бы было указано перечисляемое ключевое слово anonymous. Дополнительные сведения см. в разделе Атрибуты настройки CORS.

disableremoteplayback

Логический атрибут, отключающий возможность удалённого воспроизведения на устройствах, подключённых по проводным (HDMI, DVI и т. д.) и беспроводным технологиям (Miracast, Chromecast, DLNA, AirPlay и т. д.). Дополнительные сведения см. в проекте спецификации Remote Playback API.

В Safari в качестве запасного варианта можно использовать x-webkit-airplay="deny".

loading

Указывает, как браузеру следует загружать аудио:

eager

Загружает аудио немедленно, независимо от того, находится ли оно в видимой области просмотра (значение по умолчанию).

lazy

Откладывает загрузку аудио, пока элементы управления не окажутся на рассчитанном браузером расстоянии от области просмотра.

Примечание: Чтобы аудиоэлементы могли визуально пересекаться с областью просмотра, они должны быть видимыми. Браузеры используют атрибут controls, чтобы сделать аудиоэлементы видимыми, поэтому он необходим для отложенной загрузки. Аудио с отложенной загрузкой без атрибута controls загружаться не будет.

Отложенная загрузка позволяет не расходовать сетевой трафик и место в хранилище на аудио, пока не станет достаточно ясно, что оно понадобится. Это повышает производительность в большинстве типичных случаев использования.

Аудио с отложенной загрузкой, расположенное в видимой области просмотра, может ещё не загрузиться к моменту срабатывания события load объекта Window. Это связано с тем, что событие срабатывает только для аудио с немедленной загрузкой — отложенная загрузка не учитывается, даже если аудио находится в видимой области просмотра при первоначальной загрузке страницы.

Загрузка откладывается только при включённом JavaScript. Это мера защиты от отслеживания: если бы браузер поддерживал отложенную загрузку при отключённых скриптах, сайт всё равно мог бы отслеживать примерное положение прокрутки пользователя на протяжении сеанса, размещая аудио в разметке страницы таким образом, чтобы сервер мог отслеживать количество запросов аудио и время их отправки.

Примечание: Атрибут loading="lazy" также влияет на атрибут autoplay, как описано в соответствующем разделе этой страницы.

loop

Логический атрибут: если он указан, при достижении конца аудиозаписи проигрыватель автоматически переместится к её началу.

muted

Логический атрибут, указывающий, будет ли звук изначально отключён. Значение по умолчанию — false.

preload

Этот перечисляемый атрибут предназначен для передачи браузеру подсказки о том, что, по мнению автора, обеспечит наилучшее взаимодействие с пользователем. Он может принимать следующие значения:

  • none: указывает, что аудио не следует предварительно загружать.
  • metadata: указывает, что загружаются только метаданные аудио (например, длительность).
  • auto: указывает, что можно загрузить весь аудиофайл, даже если пользователь, вероятно, не будет его использовать.
  • пустая строка: синоним значения auto.

Значение по умолчанию различается в разных браузерах. Спецификация рекомендует задавать значение metadata.

Примечание:

  • Для аудио с установленным атрибутом loading="lazy" поведение preload применяется только тогда, когда элементы управления аудио находятся рядом с областью просмотра или внутри неё.
  • Атрибут autoplay имеет приоритет над preload. Если указан autoplay, браузеру, очевидно, придётся начать загрузку аудио для воспроизведения.
  • Спецификация не обязывает браузер следовать значению этого атрибута; это лишь подсказка.
src

URL аудио для встраивания. На него распространяются ограничения доступа HTTP. Этот атрибут необязателен: вместо него можно использовать элемент <source> внутри блока аудио, чтобы указать встраиваемое аудио.

События

audioprocess

Входной буфер объекта ScriptProcessorNode готов к обработке.

canplay

Браузер может воспроизводить мультимедиа, но считает, что загружено недостаточно данных для воспроизведения до конца без остановки для дополнительной буферизации содержимого.

canplaythrough

Браузер считает, что может воспроизвести мультимедиа до конца без остановки для буферизации содержимого.

complete

Рендеринг объекта OfflineAudioContext завершён.

durationchange

Атрибут duration обновлён.

emptied

Мультимедиа стало пустым; например, это событие отправляется, если мультимедиа уже было загружено (полностью или частично) и для его повторной загрузки вызывается метод HTMLMediaElement.load.

ended

Воспроизведение остановлено, поскольку мультимедиа достигло конца.

loadeddata

Загрузка первого кадра мультимедиа завершена.

loadedmetadata

Метаданные загружены.

loadstart

Срабатывает, когда браузер начинает загружать ресурс.

pause

Воспроизведение приостановлено.

play

Воспроизведение началось.

playing

Воспроизведение готово к запуску после приостановки или задержки из-за нехватки данных.

ratechange

Скорость воспроизведения изменилась.

seeked

Операция перемещения по записи завершена.

seeking

Началась операция перемещения по записи.

stalled

Пользовательский агент пытается получить данные мультимедиа, но они неожиданно не поступают.

suspend

Загрузка данных мультимедиа приостановлена.

timeupdate

Время, указанное атрибутом currentTime, обновлено.

volumechange

Громкость изменилась.

waiting

Воспроизведение остановлено из-за временной нехватки данных.

Примечания по использованию

Не все браузеры поддерживают одинаковые типы файлов и аудиокодеки; можно указать несколько источников во вложенных элементах <source>, и тогда браузер использует первый из поддерживаемых:

<audio controls>
  <source src="myAudio.mp3" type="audio/mpeg" />
  <source src="myAudio.ogg" type="audio/ogg" />
  <p>
    Download <a href="myAudio.mp3" download="myAudio.mp3">MP3</a> or
    <a href="myAudio.ogg" download="myAudio.ogg">OGG</a> audio.
  </p>
</audio>

В качестве источника аудио можно указать любой допустимый URL, включая URL HTTP(S) и URL данных. При использовании URL HTTP(S) учитывайте, что поведение кэширования браузера влияет на частоту запросов файла к серверу. URL данных встраивают данные аудио непосредственно в HTML. Это может быть полезно для небольших аудиофайлов, но не рекомендуется для больших файлов, так как увеличивает размер HTML-файла.

При использовании элементов <source> браузер пытается последовательно загрузить каждый источник. Если источник не загружается (например, из-за недопустимого URL или неподдерживаемого формата), браузер пробует следующий и так далее. После того как все источники не загрузились, на элементе <audio> срабатывает событие error; события error не срабатывают для каждого отдельного элемента <source>.

Вместо потоковой передачи готовых аудиофайлов можно также использовать Web Audio API, чтобы напрямую создавать аудиопотоки и управлять ими с помощью кода JavaScript. В JavaScript можно задать свойству srcObject объект MediaStream. Это часто используют для потоковой передачи аудио в реальном времени или обработки аудио в реальном времени.

const audioElement = document.querySelector("audio");
navigator.mediaDevices
  .getUserMedia({ audio: true })
  .then((stream) => {
    audioElement.srcObject = stream;
  })
  .catch((error) => {
    console.error("Error accessing the microphone", error);
  });

Обратите внимание, что источники MediaStream имеют ограничения: для них нельзя перемещаться по записи, и они поддерживают лишь ограниченный набор кодеков.

Мы подготовили подробное и обстоятельное руководство по типам мультимедийных файлов и аудиокодекам, которые можно в них использовать. Также доступно руководство по кодекам, поддерживаемым для видео.

Другие примечания по использованию:

  • Если не указать атрибут controls, проигрыватель аудио не будет включать стандартные элементы управления браузера. Однако можно создать собственные элементы управления с помощью JavaScript и API HTMLMediaElement.
  • Для точного управления аудиосодержимым элементы HTMLMediaElement генерируют множество различных событий. Это также позволяет отслеживать процесс получения аудио, чтобы обнаруживать ошибки или определять, когда данных достаточно для начала воспроизведения или обработки.
  • Элементы <audio> не могут иметь связанные с ними субтитры или подписи так же, как элементы <video>. Полезную информацию и обходные решения можно найти в статье WebVTT и аудио Иэна Девлина.
  • Чтобы проверить резервное содержимое в браузерах, поддерживающих этот элемент, можно заменить <audio> на несуществующий элемент, например <notanaudio>.

Хорошим общим источником информации об использовании HTML <audio> служит учебное пособие для начинающих Видео и аудио в HTML.

Стилизация с помощью CSS

Элемент <audio> сам по себе не имеет визуального представления, если не указан атрибут controls; в этом случае отображаются стандартные элементы управления браузера.

Для стандартных элементов управления по умолчанию задано значение inline свойства display. Часто целесообразно задать этому свойству значение block, чтобы упростить управление позиционированием и макетом, если только вы не хотите разместить элемент внутри текстового блока или аналогичного контейнера.

Стандартные элементы управления можно стилизовать с помощью свойств, влияющих на блок как единое целое: например, задать ему border и border-radius, padding, margin и т. д. Однако отдельные компоненты проигрывателя аудио стилизовать нельзя (например, изменить размер кнопок или значков, шрифт и т. д.), а элементы управления в разных браузерах различаются.

Чтобы обеспечить единый внешний вид во всех браузерах, необходимо создать собственные элементы управления; их можно разметить и стилизовать по своему усмотрению, а затем с помощью JavaScript и API HTMLMediaElement связать их с соответствующей функциональностью.

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

Обнаружение добавления и удаления дорожек

Обнаружить добавление и удаление дорожек элемента <audio> можно с помощью событий addtrack и removetrack. Однако эти события отправляются не самому элементу <audio>. Вместо этого они отправляются объекту списка дорожек внутри элемента <audio> — объекту HTMLMediaElement, соответствующему типу дорожки, добавленной в элемент:

HTMLMediaElement.audioTracks

Объект AudioTrackList, содержащий все аудиодорожки мультимедийного элемента. Чтобы получать уведомления о добавлении новых аудиодорожек в элемент, можно добавить к этому объекту обработчик события addtrack.

HTMLMediaElement.videoTracks

Добавьте обработчик события addtrack к этому объекту VideoTrackList, чтобы получать уведомления о добавлении видеодорожек в элемент.

HTMLMediaElement.textTracks

Добавьте обработчик события addtrack к этому объекту TextTrackList, чтобы получать уведомления о добавлении текстовых дорожек в элемент.

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

Например, чтобы обнаруживать добавление и удаление аудиодорожек элемента <audio>, можно использовать такой код:

const elem = document.querySelector("audio");

elem.audioTrackList.onaddtrack = (event) => {
  trackEditor.addTrack(event.track);
};

elem.audioTrackList.onremovetrack = (event) => {
  trackEditor.removeTrack(event.track);
};

Этот код отслеживает добавление и удаление аудиодорожек элемента и вызывает условную функцию редактора дорожек, чтобы зарегистрировать дорожку в списке доступных дорожек редактора или удалить её оттуда.

Для отслеживания событий addtrack и removetrack также можно использовать addEventListener().

Доступность

Аудио с речью должно сопровождаться субтитрами и расшифровками, точно описывающими его содержимое. Субтитры, заданные с помощью WebVTT, помогают людям с нарушениями слуха понимать содержимое аудиозаписи во время её воспроизведения, а расшифровки позволяют тем, кому требуется больше времени, изучать содержимое записи в удобном темпе и формате.

Если используются службы автоматического создания субтитров, важно проверить сгенерированное содержимое и убедиться, что оно точно передаёт исходное аудио.

Элемент <audio> напрямую не поддерживает WebVTT. Вам понадобится найти библиотеку или фреймворк с такой возможностью либо самостоятельно написать код для отображения субтитров. Один из вариантов — воспроизводить аудио с помощью элемента <video>, который поддерживает WebVTT.

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

1
00:00:00 --> 00:00:45
[Energetic techno music]

2
00:00:46 --> 00:00:51
Welcome to the Time Keeper's podcast! In this episode we're discussing which Swisswatch is a wrist switchwatch?

16
00:00:52 --> 00:01:02
[Laughing] Sorry! I mean, which wristwatch is a Swiss wristwatch?

Также рекомендуется предусмотреть резервное содержимое (например, прямую ссылку для скачивания) для пользователей, чей браузер не поддерживает элемент <audio>:

<audio controls>
  <source src="myAudio.mp3" type="audio/mpeg" />
  <source src="myAudio.ogg" type="audio/ogg" />
  <p>
    Download <a href="myAudio.mp3">MP3</a> or
    <a href="myAudio.ogg" download="myAudio.ogg">OGG</a> audio.
  </p>
</audio>
  • Формат Web Video Text Tracks (WebVTT)
  • WebAIM: субтитры, расшифровки и аудиоописания
  • Понимание WCAG: пояснения к руководству 1.2
  • Понимание критерия успеха 1.2.1 | Понимание WCAG 2.0 от W3C
  • Понимание критерия успеха 1.2.2 | Понимание WCAG 2.0 от W3C

Примеры

>

Базовое использование

В следующем примере показано базовое использование элемента <audio> для воспроизведения файла OGG. Воспроизведение начнётся автоматически благодаря атрибуту autoplay — если странице разрешено это делать; также предусмотрено резервное содержимое.

<!-- Basic audio playback -->
<audio src="AudioTest.ogg" autoplay>
  <a href="AudioTest.ogg" download="AudioTest.ogg">Download OGG audio</a>.
</audio>

Подробнее о том, когда работает автоматическое воспроизведение, как получить разрешение на его использование, а также когда и как его следует применять, см. в нашем руководстве по автоматическому воспроизведению.

Элемент <audio> с элементом <source>

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

<audio controls>
  <source src="foo.wav" type="audio/wav" />
  <a href="foo.wav" download="foo.wav">Download WAV audio</a>.
</audio>

Элемент <audio> с несколькими элементами <source>

В этом примере указано несколько элементов <source>. Браузер пытается загрузить источник, указанный первым (Opus), если способен его воспроизвести; в противном случае переходит ко второму (Vorbis), а затем к MP3:

<audio controls>
  <source src="foo.opus" type="audio/ogg; codecs=opus" />
  <source src="foo.ogg" type="audio/ogg; codecs=vorbis" />
  <source src="foo.mp3" type="audio/mpeg" />
</audio>

Техническая сводка

Категории содержимого Потоковое содержимое, фразовое содержимое, встроенное содержимое. Если у элемента есть атрибут controls: интерактивное содержимое и ощутимое содержимое.
Допустимое содержимое Если у элемента есть атрибут src: ноль или более элементов <track>, за которыми следует прозрачное содержимое, не содержащее <audio> или медиаэлементы <video>.
Иначе: ноль или более элементов <source>, за которыми следует ноль или более элементов <track>, за которыми следует прозрачное содержимое, не содержащее <audio> или медиаэлементы <video>.
Опускание тегов Не допускается: обязательны и открывающий, и закрывающий теги.
Допустимые родительские элементы Любой элемент, допускающий встроенное содержимое.
Неявная роль ARIA Нет соответствующей роли
Допустимые роли ARIA application
Интерфейс DOM HTMLAudioElement

Спецификации

Спецификация
HTML>
# the-audio-element>

Совместимость с браузерами

Компьютеры Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на IOS Samsung Internet WebView Android WebView на iOS
audio 3 12
3.5Чтобы Firefox мог воспроизводить аудио, сервер должен передавать файл с правильным MIME-типом.
10.5 3.1 18
4Чтобы Firefox для Android мог воспроизводить аудио, сервер должен передавать файл с правильным MIME-типом.
11 3 1.0 3 3
autoplay 3 12 3.5 10.5 3.1 18 4 14 10 1.0 4.4 10
controls 3 12 3.5 10.5 3.1 18 4 11 3 1.0 3 3
controlslist 58 79 Нет 45 Нет 58 Нет 43 Нет 7.0 58 Нет
crossorigin 33 ≤18 74
12–74При использовании crossorigin="use-credentials" файлы cookie не отправляются во время перемотки. См. ошибку 1532722.
20 10 33 79
14–79При использовании crossorigin="use-credentials" файлы cookie не отправляются во время перемотки. См. ошибку 1532722.
20 10 2.0 4.4.3 10
disableremoteplayback 121 121 Нет 107 13.1 56 Нет 43 13 6.0 Нет 13
loading 147 147 Нет 131 Нет 147 Нет Нет Нет Нет Нет Нет
loop 3 12 11 10.5 3.1 18 14 11 3 1.0 3 3
muted 15 ≤18 11 15 6 18 14 14 6 1.0 4.4 6
preload
3В Chrome 64 по умолчанию используется metadata.
12 43.5–4
15В Opera 51 по умолчанию используется metadata.
10.5–15
3.1
18В Chrome Android 64 по умолчанию используется metadata.
4
14В Opera 51 по умолчанию используется metadata.
11–14
3
1.0В Samsung Internet 9.0 по умолчанию используется metadata.
3В Chrome 64 по умолчанию используется metadata.
3
src 3 12 3.5 10.5 3.1 18 4 11 3 1.0 3 3

См. также

  • Мультимедийные технологии для веба

    • Форматы мультимедийных контейнеров (типы файлов)
    • Руководство по аудиокодекам, используемым в вебе
  • Web Audio API

  • HTMLAudioElement
  • <source>
  • <video>
  • Учебный раздел: видео и аудио в HTML

  • Основы кроссбраузерного воспроизведения аудио

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/audio

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API