Комментарий: давно пора создать исходный клиент SHOUTcast для мобильных устройств. Некоторое время я нуждался в этом, но у меня нет времени, чтобы построить его, так что слава тебе. Пожалуйста, сделайте версию для Android в какой-то момент.
Первое, что вам нужно сделать, это скачать Wireshark .
Запустите захват пакета, запустите сервер SHOUTcast, затем запустите исходный клиент и подключите его к серверу. Будьте готовы к ужасающей простоте этого протокола.
Первичный аудио протокол
- Исходный клиент подключается к SHOUTcast по TCP. Используйте порт один от базового порта. Например, если ваш базовый порт 8000, ваши слушатели подключаются к 8000, а вы подключаетесь к 8001.
- После подключения сервер SHOUTcast ничего не скажет. Просто отправьте пароль трансляции, а затем новый
CrLf
(или \r\n
).
Если пароль неверный, он скажет invalid password
или что-то в этом роде. Если это правильно, вы получите что-то вроде этого:
OK2
icy-caps:11
Обратите внимание, что после каждой строки есть CrLf
, а после отправки этих двух заголовков есть пара CrLf
.
Теперь исходный клиент должен отправить несколько заголовков: icy-name
, icy-genre
, icy-pub
, icy-br
, icy-url
, icy-irc
, icy-icq
, icy-aim
, content-type
. Отправь их так:
icy-name:My Awesome Station
После каждой строки следует CrLf
, и после того, как вы закончите отправку всех заголовков, отправьте пару CrLf
.
Как только все это будет сделано, начните отправлять данные вашего потока! Не нужно начинать с какого-то конкретного места, просто отправьте данные. Это зависит от клиентов на принимающей стороне для синхронизации с кадром. Сервер SHOUTcast полностью «туп» для трафика, проходящего через него. Вы можете подключиться к клиенту Telnet и отправить текст, если хотите.
Обновление метаданных
Итак, вам, наверное, интересно, как вы отправляете информацию для следующего трека, а что нет. Самое смешное, что это совершенно вне диапазона соединения, по которому вы отправляете аудиоданные.
Все, что вам нужно сделать, это сделать веб-запрос к базе портов (8000 в нашем примере):
http://yourserver:8000/admin.cgi?pass=yourpassword&mode=updinfo&song=your%20song&url=some_url_goes_here_but_hardly_any_clients_use_it
В случае, если это трудно читать, это параметры:
- 1070 * передача *
- режим
- песня
- 1076 * URL *
Вы заметите, что эти и другие параметры можно найти в административной панели SHOUTcast.