Icecast

Icecast — свободное ПО для организации потокового цифрового аудиовещания. Его поддержкой занимается Xiph.Org Foundation.

Сервер самодостаточен, тоесть можно обойтись только им если хочется просто набросать в него список станций которые бы он тянул с сети интернет и раздавал разным пользователям внутри локалки или снаружи себя например.

Предполагается что вы уже изучили раздел связанный с установкой системы opkg на устройство.
В примерах конфигурации предполагается что конфигурационный файл находится:

/media/DISK_A1/system/etc

Поэтому первоначальная установка icecast сводится к следующей команде в консоли:

opkg install icecast

После чего в вашу систему должен установиться соотвествующий пакет.
На первоначальном этапе рекомендую также установить screen:

opkg install screen

Откроем для редактирования файл:

/media/DISK_A1/system/etc/icecast.xml

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

Также если вы собрались использовать сервер в паре с клиентом вещания icegenerator или ezstream, обязательно установите пароль в секции relay-password.

Далее необходимо найти секцию начинающуюся со слова relay. Эта секция закомментирована и будет нам примером. Чуть ниже неё вы найдёте комментарий ввиде »–>», который обозначает конец закоментированности части конфигурации. Добавим следующие строки:

<relay>
  <server>scfire-dtc-aa01.stream.aol.com</server>
  <port>80</port>
  <mount>/stream/1018</mount>
  <local-mount>/01-gs</local-mount>
  <on-demand>0</on-demand>
  <relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<relay>
  <server>mds-station.com</server>
  <port>8000</port>
  <mount>/mds</mount>
  <local-mount>/02-mds</local-mount>
  <on-demand>1</on-demand>
  <relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>

Выше приведены типичные настройки для ретрансляции интернет радиостанций. Вы можете подправить их под себя. Параметр local-mount обозначает то как быдет выглядеть точка монтирования станции у вас на сервере, названия на ваш вкус, циферки здесь выставлены лишь для корректной сортировки. Параметр on-demand может принимать значения 0 и 1, соотвественно icecast будет ретранслировать станцию либо даже в отсуствии слушателей, либо по мере того как кто-то подключится и захочет послушать. Тут каждый решает для себя сам. С одной стороны удобно видеть работает или нет источник, с другой стороны у вас может быть тарифный план по траффику или объём канала для вас важен и лишнего занимать почём зря не стоит.

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

<mount>
  <mount-name>/02-mds</mount-name>
  <charset>UTF8</charset>
</mount>

Вставлять после секций relay, это говорит серверу что для такой-то точки монтирования использовать такую-то кодировку передаваемой информации.

Проверяем наличие папки:

/media/DISK_A1/system/var/log/icecast

Если её нет, то создаём. Если папка есть, то выдать на неё права либо chmod 777 либо задать права chown nobody:nogroup для неё.

После сохранения конфигурации вы готовы к запуску программы. Рекомендую делать это следующей командой:

screen -dmS icecast -U icecast -c /media/DISK_A1/system/etc/icecast.xml

Если всё выполнено правильно, то по ссылке http://ip:8000 (ip - это ip адрес вашего keenetic внутри локальной сети) откроется веб интерфейс сервера который начнёт ретранслировать первую станцию. Если кликнуть по ней мышкой на вашем компьютере должен появиться запрос на открытие файла с помощью вашего любимого музыкального плеера.

Если вам хочется чтобы эту радиостанцию также могли прослушивать пользователи из сети интернет, то вам необходимо:
На вашем устройстве должен быть белый и желательно постоянный ip адрес, он приобретается у вашего провайдера интернет.
В папке:

/media/DISK_A1/system/etc/firewall.d

Создаём скрипт firewall.sh с содержимым:

#!/bin/sh
iptables -A INPUT -p tcp --dport 8000 -j ACCEPT

Делаем его исполняемым спомощью команд:

chmod +x путь_и_имя_скрипта.sh

После этого при перезапуске устройства, эти правила будут автоматически применяться.