Для ваших целей Icecast и SHOUTcast эквивалентны.
Они оба используют убогую версию HTTP. Фактически вы можете сделать простой HTTP-запрос и использовать стандартные клиентские библиотеки HTTP, и он почти всегда будет работать просто отлично. Единственное, что отличается, это то, что SHOUTcast вернет ICY 200 OK
вместо HTTP 200 OK
в своем ответе.
Теперь, если вы сделаете запрос, как вы сделали выше, вы получите стандартный аудиопоток, который вы можете воспроизводить напрямую. Как вы указали, MP3 и AAC используются почти исключительно, но могут использоваться и другие форматы.
Если вам нужны метаданные, вы должны сообщить серверу, что готовы их получить. Вы должны поместить этот заголовок в свой запрос:
Icy-MetaData:1
Как только вы это сделаете, в ответе вы увидите еще один заголовок, такой как icy-metaint:8192
, что означает, что каждые 8192 байта вы будете получать кусок метаданных.
Я не буду вдаваться в подробности, потому что это уже хорошо документировано. Нет необходимости заново набирать колесо:
Получение информации о дорожке из аудиопотока с использованием PHP
http://www.smackfu.com/stuff/programming/shoutcast.html
Однако, если у вас возникнут вопросы, пожалуйста, опубликуйте их в StackOverflow и отметьте их как icecast или shoutcast, и я буду рад помочь вам.