Действительно ли возможно играть shoutcast/icecast поток с помощью HTML5?
Если так, как я должен реализовать его?
Добавьте точку с запятой в конец http-запроса. Это протокол, установленный shoutcast, чтобы переопределить его обнаружение браузером. Как это:
<audio controls src="http://shoutcast.internet-radio.org.uk:10272/;"></audio>
Да. Но это работает только в Safari
<!DOCTYPE html>
<audio controls src="http://shoutcast.internet-radio.org.uk:10272/"></audio>
. Причина Opera и Firefox не поддерживают несвободные кодеки
Есть большая проблема с SHOUTcast, которая, как я подозреваю, является причиной того, что она не работает даже в Chrome, который должен поддерживать MP3.
SHOUTcast может обслуживать три различных типа ответа:
собственный протокол SHOUTcast «ICY», потоковый аудиоответ. Он решает сделать это, если проигрыватель, обращающийся к потоку, включает заголовок icy-metadata: 1
.
Ответ на потоковое аудио по протоколу HTTP без дополнительных метаданных для медиаплееров без поддержки ICY.
«SHOUTcast D.N.A.S. Статус »и другие страницы в веб-интерфейсе.
Как он решает, обслуживать ли веб-страницу вместо аудиопотока? Он угадывает, используете ли вы веб-браузер.Посмотрев, начинается ли заголовок User-Agent
с Mozilla / ...
. Потому что все веб-браузеры - это Mozilla, верно? Боже, SHOUTcast.
Поэтому, когда Chrome пытается получить аудиопоток для воспроизведения, SHOUTcast думает, что это веб-браузер (ну ... это так), и отказывается предоставить ему аудиопоток для вставки в аудиотег. Вместо этого он получает веб-страницу администратора.
(Я предполагаю, что Safari передает заголовок icy-metadata
, чтобы избежать проблемы, имея специальную поддержку SHOUTcast. Я не могу протестировать его в данный момент, так как Safari не воспроизводит аудио или видео . Может быть, он хочет, чтобы я установил для этого QuickTime. Может быть, он может забиться.)
Так что вам, вероятно, потребуется добавить аудиоплеер Flash в качестве запасного варианта.