Разработка клиента для сервера icecast - PullRequest
8 голосов
/ 19 мая 2011

Я разрабатываю клиент для сервера icecast (www.icecast.org).Кто-нибудь может сказать мне, какой формат они используют для потоковой передачи контента?

Я искал на их страницах, но информации о формате потока вообще нет.

Затем я проверил трассировку Wireshark, и благодаря моему пониманию формата аудиоданных, которые я получаю в ответе 200 OK на запрос GET, это просто обычные двоичные аудиоданные без каких-либо метаданных, поэтомуПо сравнению с SHOUTcast или HTTP Live Streaming (HLS) это относительно простой подход.

Это правильно?Есть опыт?

Фрагмент следа Wireshark:

GET /bonton-128.mp3 HTTP/1.1
Host: icecast3.play.cz
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.19.4 (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4
Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: en-US
Accept-Encoding: gzip, deflate
Connection: keep-alive


HTTP/1.0 200 OK
Content-Type: audio/mpeg
icy-br:128
ice-audio-info: ice-samplerate=44100;ice-bitrate=128;ice-channels=2
icy-br:128
icy-description:Radio Bonton
icy-genre:Pop / Rock
icy-name:Radio Bonton
icy-pub:0
icy-url:http://www.radiobonton.cz
Server: Icecast 2.3.2
Cache-Control: no-cache

Here are then aac or MPEG data

Спасибо и всего наилучшего,

STEN

Ответы [ 2 ]

15 голосов
/ 20 мая 2011

Для ваших целей 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, и я буду рад помочь вам.

0 голосов
/ 08 октября 2013

Я только недавно закончил проект для радиостанции, где они использовали Icecast.Я хочу поделиться с вами радиоплеером и некоторыми PHP Wrappers, которые я использовал для получения информации от centova, icecast и lastfm.

...