Можно ли получить метаданные Icecast из аудиоэлемента HTML5?

Я использую элемент audio для потоковой передачи источника ogg с сервера icecast. Извлекает ли элемент audio ледяные метаданные и есть ли способ получить к ним доступ через javascript?

По сути, я хочу показать "воспроизводящуюся в данный момент" информацию о радиостанции, которую я транслирую. Какие у меня варианты?

Спасибо!


person Roman Semko    schedule 24.05.2011    source источник


Ответы (2)


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

Смотрите эти сообщения:

Это ни в коем случае не невозможно. Вам просто нужно сделать это на стороне сервера. (См., В частности, эту вторую ссылку.)

Я также должен отметить, что на полномасштабном сервере SHOUTcast (не тестировался с Icecast, но стоит попробовать) генерируется "7.html", который содержит данные о количестве слушателей, максимальном количестве слушателей, пиковом количестве слушателей, стерео / моно, битрейт и название текущей дорожки в виде значений, разделенных запятыми. Нравится:

2,1,33,625,2,128,J Mascis - Not Enough

Если вы можете получить http://yourstreamingserver:port/7.html, вы можете легко получить эти данные.

person Brad    schedule 25.05.2011
comment
Проблема заключается в отображении названия песни в реальном времени, синхронизированном с аудиопотоком, это невозможно при чтении с сервера shoutcast (7.html), только в реальном времени возможно чтение метаинформации, встроенной в аудиопоток. Буду рад прочитать метаданные с javascript / html5 - person Jose Nobile; 21.07.2013
comment
@JoseNobile, к сожалению, у вас нет выбора ... по крайней мере, если вам нужна совместимость. Вы можете использовать один из кодеков, реализованных в браузере, и добавить несколько заголовков в свой поток для поддержки CORS, а затем справиться с накладными расходами чистого JS-кодека. Для большинства это невыполнимо. Также имейте в виду, что по своей природе метаданные в стиле SHOUTcast в любом случае не полностью синхронизированы. Вы также можете сделать что-то на стороне сервера с помощью AJAX с длинным опросом (например, Socket.IO). - person Brad; 21.07.2013
comment
использование AJAX для потоковой передачи невозможно из-за ограничений протокола, домена и порта. На сервере Shoutcast нет возможности добавлять пользовательские заголовки в виде Access-Control-Allow-Origin: * (для использования CORS) Я отправил запрос функции на форум Google Chrome productforums.google.com/forum / #! category-topic / chrome / - person Jose Nobile; 29.07.2013

В случае потока контейнера Ogg (как Vorbis, так и Opus), по крайней мере, Firefox поддерживает доступ javascript к метаданным. В настоящее время это только Javascript API "от производителя": audio.mozGetMetadata();

С другой стороны, если вы используете Icecast 2.4.1, вы можете получить доступ к метаданным независимо через JSON API. Применяется отсутствие синхронизации, как указано в других комментариях. Хотя обычно это «достаточно близко».

person TBR    schedule 25.11.2014