<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>, и браузер будет использовать первый понятный ему.
<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 и APIHTMLMediaElement. - Для точного управления вашим аудио контентом, элементы
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> , можно использовать такой код:
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> не поддерживается:
<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>
Примеры
Базовое использование
В следующем примере показано простое использование элемента <audio> для воспроизведения файла OGG. Он будет воспроизводиться автоматически из-за атрибута autoplay — если страница имеет соответствующее разрешение — и также включает резервное содержимое.
<!-- 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, так как браузер может сразу определить, может ли он воспроизвести этот файл и не тратить время впустую, если нет.
<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 | |
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 | 20 | 10 | 33 | 79 | 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. |
3.1 | 18По умолчаниюmetadata в Chrome 64. |
4 |
14По умолчаниюmetadata в Opera 51. |
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 |
См. также
© 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