Spec-Zone.ru › HTML

<audio>: Элемент вставки аудио

Базовая линия Широко доступно

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

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

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

Попробуйте

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

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

Атрибуты

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

autoplay

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

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

controls

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

controlslist

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

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

crossorigin

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

anonymous

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

use-credentials

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

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

disableremoteplayback

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

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

loop

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

muted

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

preload

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

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

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

Примечание:

  • Атрибут 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>, и браузер будет использовать первый понятный ему.

html
<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>

Мы предлагаем исчерпывающее руководство по типам файлов медиа и поддерживаемым кодекам аудио. Также доступно руководство по поддержке кодеков видео.

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

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

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

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

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

Стандартные элементы управления по умолчанию имеют значение display inline по умолчанию, и часто рекомендуется установить значение в 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> , можно использовать такой код:

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

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

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

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

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

Доступность

Аудио с озвученным диалогом должно предоставлять как субтитры, так и транскрипты, которые точно описывают его содержимое. Субтитры, которые указываются с помощью 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> не поддерживается:

html
<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>
  • Формат Веб-видеотекстовых треков (WebVTT)
  • WebAIM: Субтитры, транскрипты и аудиоописания
  • MDN Понимание WCAG, пояснения к пункту 1.2
  • Понимание критерия успеха 1.2.1 | W3C Понимание WCAG 2.0
  • Понимание критерия успеха 1.2.2 | W3C Понимание WCAG 2.0

Примеры

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

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

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

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

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

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

html
<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:

html
<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
audio 3 12
3.5Для воспроизведения аудио в Firefox сервер должен передавать файл с правильным типом MIME.
10.5 3.1 18
4Для воспроизведения аудио в Firefox сервер должен передавать файл с правильным типом MIME.
11 3 1.0 3
autoplay 3 12 3.5 10.5 3.1 18 4 11 3 1.0 3
controls 3 12 3.5 10.5 3.1 18 4 11 3 1.0 3
controlslist 58 79 Нет 45 Нет 58 Нет 43 Нет 7.0 58
crossorigin 33 ≤18 74
12–74С crossorigin="use-credentials", куки не отправляются во время поиска. См. ошибку 1532722.
20 10 33 79
14–79С crossorigin="use-credentials", куки не отправляются во время поиска. См. ошибку 1532722.
20 10 2.0 4.4.3
disableremoteplayback 121 121 Нет 107 13.1 56 Нет 43 13 6.0 Нет
loop 3 12 11 10.5 3.1 18 14 11 3 1.0 3
muted 15 ≤18 11 15 6 18 14 14 6 1.0 4.4
preload
3По умолчанию metadata в Chrome 64.
12 43.5–4
15По умолчанию metadata в Opera 51.
10.5–15
3.1
18По умолчанию metadata в Chrome 64.
4
14По умолчанию metadata в Opera 51.
11–14
3
1.0По умолчанию metadata в Samsung Internet 9.0.
3По умолчанию metadata в Chrome 64.
src 3 12 3.5 10.5 3.1 18 4 11 3 1.0 3

См. также

  • Веб-технологии для медиа
    • Форматы контейнеров медиа (типы файлов)
    • Руководство по аудиокодекам, используемым в веб
  • API Веб-аудио
  • HTMLAudioElement
  • <source>
  • <video>
  • Обучающий раздел: Видео и аудио контент
  • Основы кроссбраузерного аудио

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

Spec-Zone.ru

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