- Аудиотег HTML5 воспроизводится, но элементы управления не работают должным образом
- 4 ответа
- Почему не удается получить звук с помощью тега HTML audio с атрибутом autoplay
- 2 ответа
- Редактировать
- Не работает тег audio
- Атрибуты
- События
- Взаимодействие с CSS
- Примеры
- Базовое использование
- «>_с_элементом_ » title=»Permalink to Элемент с элементом «>Элемент с элементом
- «>_с_множеством_элементов_ » title=»Permalink to Элемент с множеством элементов «>Элемент с множеством элементов
- Проблемы доступности
- Как заставить работать тег autoplay
- Решение
- HTML5 Audio — cостояние дел. Часть 1
- ■ Типы MIME
- ● Серверная часть
- ● Клиентская часть
- ● Заранее узнать тип аудио поможет .canPlayType (наверное)
- ■ Поддержка различных кодеков в браузере
- ● Контейнеры, форматы и расширения файлов (и снова эти MIME-типы)
- ● Мы имеем и не боимся его использовать!
- ■ Буферизация, поиск и временны́е диапазоны
- ● Атрибут buffered
- ● Объект TimeRanges
- ● Атрибуты seeking и seekable
Аудиотег HTML5 воспроизводится, но элементы управления не работают должным образом
Итак, тег audio работает и воспроизводит звук нормально, но поиск / навигация не работают. Он не путешествует со звуком, и вы не можете искать / перемещаться по плееру. Вот как это выглядит для 1-минутного и 23-секундного аудиоклипа:
Кроме того, когда проигрыватель закончил, время / продолжительность выключено . Не знаю, как еще это объяснить. Вот как это выглядит после:
Это код для плеера:
Изменить — Подробнее
Я добавил JSFiddle. Кроме того, похоже, что это происходит с более длинными аудиоклипами, поэтому это может быть связано с пропускной способностью. Когда клип длится несколько секунд ( 4
4 ответа
Я тоже столкнулся с этим. Это mp3 Twilio. Похоже, это проблема с форматами файлов Twilio mp3 или заголовками ответов. MP3 распознается как поток. Это также может быть намеренным.
Простое исправление — просто переключитесь на версию файла wav . Используйте «.wav» в качестве расширения (или оставьте его выключенным, по умолчанию используется wav).
Я только что нашел эту подсказку здесь:
Обратите внимание, что в последней спецификации HTML5 предварительная загрузка заменяет автоматический буфер. Ранее автобуфер принимал логическое значение, определяющее, должен ли файл буферизоваться заранее. В настоящее время браузеры переходят от автоматического буфера к предварительной загрузке, поэтому мы рекомендуем пока использовать оба атрибута.
Таким образом, вы должны использовать это для принудительной предварительной нагрузки.
Если вы измените preload на ‘none’ вместо ‘auto’ , он будет работать нормально
См. скрипт или запустите фрагмент
Я столкнулся с этим, не зная, что происходит, и часами искал ответы. Мои файлы MP3 имеют длину более 30 минут, и в Firefox элементы управления MP3 работали довольно хорошо, но в Chrome я не мог заставить работать управление поиском / пересылкой.
Попробовав JSFiddles этой страницы и отладив, я обнаружил, что проблема не в коде HTML5. Итак, я последовал подходу, обслуживающему MP3 через мою бэкэнд-функцию send_file ruby on rails, и, наконец, он работал в Chrome. Я добавил маршрут «/ stream» и в его контроллере вернул функцию send_file. Именно так:
Мне пришлось зарегистрировать MIME-тип MP3 в файле инициализатора, чтобы метод lookup_by_extension работал, поэтому я использовал:
Я застрял, пытаясь заставить элементы управления работать в iOS, но это уже другая история. Я выложу обновление, если оно заработает для мобильной версии 🙂
ОБНОВЛЕНИЕ :
Отсутствие элемента управления временной шкалой в браузерах iOS было конкретно связано с шириной компонента. Принуждение к минимальной ширине сработало, но испортило дизайн в узких устройствах (например, iPhone 5).
Я закончил тем, что изменил свой CSS, заставив некоторые webkit-pseudo-elements и стилизовав что-то вроде этого :
Источник
Почему не удается получить звук с помощью тега HTML audio с атрибутом autoplay
Пытался сделать для трейнера созданную html-страницу. Поэтому я хотел, чтобы звук стартовой страницы воспроизводился автоматически. Но когда я открываю стартовую страницу, этот аудиофайл не воспроизводится автоматически. Я тестировал его в браузере Chrome
Я использовал другой способ, тоже не автозапускается
Я пробовал ваше решение, но звук по-прежнему не воспроизводится.
Надеюсь, все мне помогут, большое вам спасибо
2 ответа
В Chrome работает мой фрагмент:
Аудиотегу нужно id=»myaudio» вот так:
Сценарий, который у вас внизу, ищет тег с идентификатором ‘myaudio’ и вызывает play() для воспроизведения аудиоклипа.
Протестировано в chrome 70.0.3538
Редактировать
Ошибка, с которой вы столкнулись, в основном связана с тем, что обещание, возвращенное при вызове метода воспроизведения, не было перехвачено (см. Код ниже для обработки обещания).
Однако помимо этого есть изменения в политике автоматического воспроизведения Chrome появится в этом месяце, что повлияет на возможность автовоспроизведения в Chrome. Короче говоря, вам потребуются разрешения, если вы хотите автоматически воспроизводить звук на веб-странице, в противном случае вам нужно будет дождаться взаимодействия с пользователем, прежде чем вы сможете воспроизвести звук.
Ниже приведен пример, который проверяет, можете ли вы воспроизводить автоматически (состояние AudioContext немедленно переходит в состояние «работает»), в противном случае воспроизведение начнется после взаимодействия с пользователем (пользователь нажимает кнопку).
Источник
Не работает тег audio
HTML-элемент используется для встраивания звукового контента в документ. Он может содержать один или более источников аудио, представленных с помощью атрибута src или элемента – браузер выберет один наиболее подходящий. Он так же может предназначаться для потокового мультимедиа, используя интерфейс MediaStream .
Не все браузеры поддерживают одинаковые форматы аудио. Вы можете предоставить множество источников внутри вложенных элементов и тогда браузер будет использовать первый, который он понимает:
Другие примечания по использованию:
- если вы не укажете атрибут controls , тогда аудиоплеер не будет добавлять стандартные элементы управления звуком браузера. Вы можете создать ваши собственные элементы управления в помощью JavaScript и HTMLMediaElementAPI;
- чтобы обеспечить точный контроль над вашим аудиоконтентом, HTMLMediaElement инициирует (вызывает) множество различных событий;
- вы так же можете использовать Web Audio API для непосредственной генерации и управления потоками аудио из кода JavaScript;
- элементы не могут иметь субтитры, в отличие от элементов . Смотрите «WebVTT и аудио» для более подробной информации.
Хороший источник информации по использованию HTML-элемента – это руководство для начинающих «Видео- и аудиоконтент».
Атрибуты
К этому элементу применимы глобальные атрибуты.
autoplay Атрибут логического типа. Если он указан, аудио начнёт автоматически воспроизводиться, как только сможет это сделать, не дожидаясь завершения загрузки всего файла.
Этот атрибут указывает, следует ли использовать CORS при загрузке мультимедиа или нет. Допустимые значения:
- anonymous : Запрос cross-origin (т.е. с HTTP-заголовком Origin ) выполняется, но параметры доступа не передаются (т.е. нет cookie, не используется стандарт X.509 или базовая HTTP-аутентификация);
- use-credentials : Запрос cross-origin (т.е. с HTTP-заголовком Origin ) выполняется вместе с передачей параметров доступа (т.е. есть cookie, используется стандарт X.509 или базовая HTTP-аутентификация).
Если этот атрибут не задан, то CORS при загрузке мультимедиа не используется (т.е. без отправки HTTP-заголовка Origin ). Если задан неправильно, то он обрабатывается так, как если бы использовалось значение anonymous . Для получения дополнительной информации смотрите «Настройки атрибутов CORS».
loop Атрибут логического типа. Если он указан, проигрыватель будет автоматически возвращаться в начало при достижении конца аудио. muted Атрибут логического типа, который указывает, будет ли звук изначально отключён. Значением по умолчанию является false . preload
Этот атрибут предназначен для того, чтобы указать браузеру, что, по мнению автора, приведёт к лучшему взаимодействию с пользователем. Он может иметь одно из следующих значений:
- none : указывает, что аудио не должно предварительно загружаться;
- metadata : указывает, что предварительно загружаются только метаданные аудио (например, продолжительность аудио);
- auto : указывает, что весь файл аудио может быть предварительно загружен, даже если пользователь не предполагает его использовать;
- пустая строка: синоним значения auto .
Значение по умолчанию отличается для каждого браузера. Спецификация рекомендует установить значение metadata .
События
Этот элемент может инициировать (вызывать) различные события (en-US).
Взаимодействие с CSS
Стандартные элементы управления имеют значение свойства display , равное inline , и зачастую хорошей идеей является установка этого свойства в значение block , чтобы улучшить контроль над позиционированием и разметкой, если вы не хотите, чтобы он находился внутри текстового блока или чего-то подобного.
Вы можете стилизовать стандартные элементы управления CSS-свойствами, которые влияют на блок как единое целое, например, вы можете задать border и border-radius , padding , margin и т.д. Тем не менее вы не можете стилизовать отдельные компоненты внутри аудиоплеера (например, изменить размер кнопок, иконок, размер шрифта и т.д.), и элементы управления в разных браузерах отличаются.
Чтобы получить внешний вид совместимый с разными браузерами, вам необходимо создать собственные элементы управления. Они могут быть размечены и стилизованы любым удобным для вас способом и затем может быть использован JavaScript вместе с API HTMLMediaElement для объединения функций, которые они выполняют.
«Основы стилизации видеопроигрывателя» предоставляют некоторые полезные методы стилизации – они написаны в контексте , но в значительной степени применимы и к .
Примеры
Базовое использование
«>_с_элементом_ » title=»Permalink to Элемент с элементом «>Элемент с элементом
В этом примере указывается, какой аудиотрек будет добавлен с помощью атрибута src во вложенный элемент , а не в непосредственно элемент . Всегда полезно включать MIME-тип файла в атрибут type , так как браузер может немедленно определить, может ли он воспроизвести этот файл, и не тратить на него время, если не может.
«>_с_множеством_элементов_ » title=»Permalink to Элемент с множеством элементов «>Элемент с множеством элементов
Этот пример включает множество элементов . Браузер попытается загрузить источник из первого элемента (Opus), если он не в состоянии воспроизвести его, тогда он перейдёт ко второму (Vorbis) и, наконец, к третьему (MP3), если все предыдущие по каким-либо причинам не могут быть воспроизведены браузером:
Проблемы доступности
Audio with spoken dialog should provide both captions and transcripts that accurately describe its content. Captions allow people who are experiencing hearing loss to understand an audio recording’s content as the recording is being played, while transcripts allow people who need additional time to be able to review the recording’s content at a pace and format that is comfortable for them.
If automatic captioning services are used, it is important to review the generated content to ensure it accurately represents the source audio.
In addition to spoken dialog, subtitles and transcripts should also identify music and sound effects that communicate important information. This includes emotion and tone:
Источник
Как заставить работать тег autoplay
Помощь в написании контрольных, курсовых и дипломных работ здесь.
есть код, но бутсрап не фурычит. подскажите, пожалуйста, как исправить? !DOCTYPE html> 13
Решение
a_lar, в связи с политикой современных браузеров автоплей невозможен.
Mailo, да. Не так давно на две темы подряд про видео отвечал, можете поискать)
В целом, это правильная позиция. Но неплохо было бы это в документации описать, чтобы не возникало вопросов у тех, кто с этим ещё не сталкивался.
почему мне кажется что не каждый десятый читает документацию.
Mailo, потому что лень набрать 3 слова в гугле.
gogolik, это приходит с опытом)
как заставить работать QT
Только установила QT. Пытаюсь скомпилировать консольную программу: #include int.
Как заставить это работать
Кароче есть класс он конечно же находится в отдельных hpp и cpp файлах. В классе есть template.
Как заставить работать UART?
Решил разобраться с работой UART. Написал такую вот простейшую программку. МК подключен к КОМ.
Пытаюсь разобраться в основах JS и JQ, но даже азы даются с трудом. Как заставить данный код.
Источник
HTML5 Audio — cостояние дел. Часть 1
Это продолжение моей (автора, Марка Боаса) статьи 2009 года «Native Audio in the browser» (англ., и дополненной в октябре 2010 —прим. перев.), которая объясняет основы работы аудио в HTML5. Возможно, стоит почитать сначала её, если вы хотите почувствовать работу тега и связанного с ним API. (Есть русский перевод, но в варианте от 2009 года.)
Теперь, через 2.5 года, пришло время посмотреть, как идут дела. При том, что многие продвинутые аудио API активно разрабатываются, улучшается воодушевляющая нас нативная браузерная поддержка звука — самое время вернуться в увлекательный мир тега .
Хороший способ понять, как идут дела — посмотреть несколько примеров использования, что мы увидим далее.
Как же нам начать? Есть несколько понятий, которые надо освоить для подготовки. Давайте сначала разберёмся в типах MIME.
■ Типы MIME
● Серверная часть
Их называют ещё интернет медиа-типами — это один из способов сделать так, чтобы ваша система знала, как работать с медиаданными.
Прежде всего, сервер должен быть настроен для правильной поддержки MIME-типов. В случае Apache это означает, что в .htaccess имеются строки:
| Совет : Не делайте gzip-сжатие медиафайлов на сервере. Большинство форматов уже сжаты, и есть некоторая поддержка для остальных. Кроме того, в запасном решении с флешем, он не поддерживает сжатия медиаданных. |
● Клиентская часть
При описании источников данных в коде или разметке можно указать MIME-тип, который позволит браузеру определить данные правильно.
Самый надежный способ описать аудио HTML5 — примерно такой:
Здесь определяется тег и используемые источники данных. Браузер выберет только один — он не будет проигрывать их два или больше. В этом же коде размещаются резервные варианты обработки.
Вместе с адресом данных в атрибуте src указан атрибут type. Он не обязателен, но помогает браузеру узнать MIME-тип и кодеки для отдаваемого файла до того как он его загрузит. Если его нет, браузер пытается узнать тип из файла возможными способами.
| Замечание : можно пропустить в атрибуте название кодека, но для надежности и эффективности я рекомендую помогать браузеру, давая максимум возможной информации. |
Отлично. Теперь мы знаем, как определить адрес файла, и браузер преспокойно выберет первый поддерживаемый им формат. А можем ли мы подать файл динамически?
● Заранее узнать тип аудио поможет .canPlayType (наверное)
К счастью, API показывает, поддерживается ли данный формат файла в браузере. Но вначале — краткое описание того, как мы управляем тегом .
Если объект Audio описывается в HTML, доступ к объекту можно получить через DOM:
или, если определён id,
Как вариант, объект создаётся полностью на Javascript.
Если есть объект Audio, то есть доступ к его методам и свойствам. Для проверки поддержки форматов используют метод canPlayType с параметром — текстовым значением MIME-типа.
Можно даже явно указать кодек:
canPlayType возвращает одно из 3 значений:
1) probably,
2) maybe, или
3) «» (пустая строка).
Смысл получения этих странных типов истекает из общей странности ситуации, в которой находятся кодеки, пока мы судим о них по типу. Без реальной попытки воспроизведения браузер может только догадываться о применимости кодека.
Итого, для проверки поддержки делаем:
Здесь проверяется что canPlayType поддерживается («!!» просто превращает объект строки в логический тип) и затем проверяется, что canPlayType нашего формата — не пустая строка. (Как-то нелогично с первой частью. Наверное, автор забыл упомянуть, что может вернуть undefined? —прим. перев.)
■ Поддержка различных кодеков в браузере
Посмотрим, как поддерживаются кодеки в современных браузерах.
Кодеки десктопных браузеров:
| Десктопные версии | Номер | Поддержка кодеков |
|---|---|---|
| Internet Explorer | 9.0+ | MP3, AAC |
| Chrome | 6.0+ | Ogg Vorbis, MP3, WAV (начиная с Chrome 9) |
| Firefox | 3.6+ | Ogg Vorbis, WAV |
| Safari | 5.0+ | MP3, AAC, WAV |
| Opera | 10.0+ | Ogg Vorbis, WAV |
Кодеки мобильных:
| Мобильные браузеры | Версия | Поддержка кодеков |
|---|---|---|
| Opera Mobile | 11.0+ | Device-dependent |
| Android | 2.3+ | Device-dependent |
| Mobile Safari | (iPhone, iPad, iPod Touch) iOS 3.0+ | MP3, AAC |
| Blackberry | 6.0+ | MP3, AAC |
Хорошая новость — в том, что на момент написания статьи около 80% браузеров поддерживают HTML5 Audio.
Плохая новость — до сих пор нет договорённости об универсальной поддержке какого-либо кодека, поэтому сервер должен поддерживать и MP3, и Ogg Vorbis, чтобы максимально полно поддержать HTML5 Audio в браузерах.
| Забавно : Android 2.2 поддерживает , но не . Чтобы воспроизводить аудио, нужно использовать тег . |
● Контейнеры, форматы и расширения файлов (и снова эти MIME-типы)
Выше я упоминал об известных аудиоформатах, но технически мы должны работать с их форматом контейнера. (Контейнер может содержать более одного формата — например, MP4 может содержать AAC и AAC+.)
| Container | Format(s) | File Extensions | MIME Type | Codec String |
|---|---|---|---|---|
| MP3 | MP3 | .mp3 | audio/mpeg | mp3 |
| MP4 | AAC, AAC+ | .mp4, .m4a, .aac | audio/mp4 | mp4a.40.5 |
| OGA/OGG | Ogg Vorbis | .oga, .ogg | audio/ogg | vorbis |
| WAV | PCM | .wav | audio/wav | 1 |
● Мы имеем и не боимся его использовать!
Ладно, мы кое-как запустили аудио-теги — и это работает. Что ещё хотелось бы сделать? Сейчас в каждом браузере элементы работают немного по-разному из-за настроек по умолчанию. Хочется немного подогнать их к единому виду. Для этого есть несколько свойств элемента .
Несколько самых используемых атрибутов:
| Свойство | Описание | Возвращаемое значение |
|---|---|---|
| currentTime | позиция курсора проигрывателя | double (секунды) |
| duration | длительность воспроизведения | double (секунды); только чтение |
| muted | заглушен ли звук | boolean |
| paused | остановлено ли воспроизведение | boolean |
| volume | уровень громкости | double (от 0 до 1) |
Использовать их крайне просто. Например:
Переменной duration присвоено значение длительности (в секундах) аудиоклипа.
■ Буферизация, поиск и временны́е диапазоны
Ситуация на этом фронте улучшается, разработчики браузеров начинают делать основную часть спецификации.
API даёт нам атрибуты buffered и seekable, когда хотим узнать, какая часть медиафайла была буферизована или предзагружена для воспроизведения без задержек. Они оба возвращают объект TimeRanges, который есть список интервалов — числа начала и конца.
● Атрибут buffered
Возвращает интервалы полностью загруженных участков файла. Небольшой пример:
● Объект TimeRanges
The TimeRanges object contains data on the parts on buffered media in the form of one or more — you guessed it — time ranges. A TimeRanges object consists of these properties:
Содержит данные о частях буферизованных участков медиафайла (один или более — сколько успело буферизоваться) и имеет свойства:
length — число интервалов,
start(index) — начальное время указанного интервала,
end(index) — конечное время указанного интервала
(отсчитывается от начала воспроизведения).
| Забавно : По умолчанию размерность времени в JS Audio API — секунды, хотя традиционные функции в JS используют миллисекунды. |
Таким образом, в этом примере:
В каких случаях может быть больше одного буферизованного интервала? Пользователь кликает впереди, на небуферизованном участке шкалы на блоке проигрывателя. Объект начинает новую буферизацию от точки клика, и возникают 2 интервала буферизации.
| Совет : Большинство аудио-проигрывателей позволяет перемещаться на новые позиции файла во время загрузки, выполняя ряд запросов на сервер. В Apache множественный доступ к файлу разрешён по умолчанию, но надо убедиться в этом для сервера с неизвестными настройками. |
Заметим, что если пользователь активно переключает точку воспроизведения, буферизация имеет мало смысла. Некоторые браузеры могут прочитать конец файла, чтобы установить длительность записи, почти сразу создавая 2 интервала буфера. Поэтому прогресс-бар в проигрывателе несколько сложнее обычного контрола прогресс-бара с 1 интервалом.
Вы можете проверить TimeRanges вашего браузера с помощью этого удобного HTML5 Media Event Inspector.
● Атрибуты seeking и seekable
Поиск в контексте медиафайла — это заглядывание вперёд или назад в медиафайл. Обычно это происходит, когда ещё не закончена полная буферизация файла. Атрибут seeking используется для указания на то, что призошло событие «seeked«. true означает, что часть файла ещё не загружена.
Примечание на сайте оригинала, html5doctor.com :
Содержание следующей части:
 ● Замечание о предзагрузке
 ● Успешно воспроизведённое
■ Медиа-события
■ Потоковое воспроизведение
■ Эволюция спецификаций (или «Вау, это дело движется!»)
● Метод load
● Когда браузеры вернутся к официальной документации?
 ● Автовоспроизведение и громкость
 ● Одновременное воспроизведение нескольких аудиотегов
 ● Зависимость от ОС
■ Что нового?
 ● Изменение шага
 ● Медиа-фрагменты
■ Расширенное аудио API: будущий звук в браузерах
■ Заключение
■ Литература
Источник