Чтение метаданных Icecast с помощью Javascript

Я работаю над приложением веб-радио, основанным на AngularJS и Laravel 5, которое читает потоки Icecast. Сейчас я загружаю поток в аудиоэлемент html5, и он прекрасно работает. Каждые 5 секунд я вызываю метод backend, который возвращает информацию о воспроизводимой песне, и я могу обновить представление с новым названием «исполнитель»…

Но я столкнулся с проблемой: вид обновляется за несколько секунд (иногда до 40s), прежде чем песня действительно начинается. Это может быть связано с буферизацией браузера.

Теперь я пытаюсь прочитать информацию песен из метаданных icecast. Есть ли способ получать метаданные каждый раз, когда они находятся в потоке в JS? Это было бы идеально, у меня не будет никаких проблем с задержкой, и мне не придется вызывать серверную каждые 5 секунд.

1 ответ

  1. Firefox (gecko) имеет специфичный для поставщика JavaScript API для метаданных HTML5. Я думаю, что я объяснил это в другом месте на SO.

    Я не знаю ни одного кроссбраузерного варианта, который работал бы с простой серверной частью HTML5.

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