Icegenerator

IceGenerator является генератором потока для Icecast / Shoutcast серверов. Вещание MP3 на Icecast / Shoutcast сервер без перекодирования, экономия ресурсов CPU. Возможность поиска каталогов, в нашем варианте собран без поддержки MySQL / PGSQL, также убрана возможность чтения тегов ID3 из файлов, возможно в следующих сборках будет добавлено, поддерживается M3U/PLS, META динамические данные и Telnet сервис.

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

/media/DISK_A1/system/etc/icegenerator

Установка сводится к:

opkg install icegenerator

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

opkg install screen

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

/media/DISK_A1/system/etc/icegenerator.conf

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

Пример файла конфигурации для того чтобы icegenerator вещал локально расположеную музыку на вашем жёстком диске подключенном к устройству:

# IP адрес сервера
IP=127.0.0.1
# Порт сервера 
PORT=8000
# Тип сервера
# 2 - для Icecast 2.X
SERVER=2
# Точка монтирования потока на сервере
MOUNT=/mymusic
# Для Icecast всегда source
SOURCE=source
# Пароль на сервер [[wiki:icecast|]] он указан в его конфигурации в разделе relay-password
PASSWORD=password
# Формат файлов которые будут проигрываться
# 0 - Ogg Vorbis
# 1 - MP3
FORMAT=1
#Путь к файлам котрые будут проигрываться
MP3PATH=pth:/media/DISK_A1/files/music
#Проигрывать рекурсивно, то есть прочитывать вложенные директории
RECURSIVE=1
# Тут можно указать файл в который будет записываться поток
DUMPFILE=
# Проигрывать по кругу
LOOP=1
# Проигрывать случайным образом
SHUFFLE=1
# Имя радиостанции 
NAME=My Local Music Collection
# Жанр станции
GENRE=Other
# Описание станции
DESCRIPTION=All my music
# Адрес станции
URL=http://ip:8000/mymusic.m3u
#Битрейт потока
BITRATE=128
# Поток публичный
PUBLIC=1
#Как часто обновлять информацию о потоке
METAUPDATE=0
# Настройка логирования
# 0 - не вести логи
# 1 - Передавать на syslogd
# 2 - Писать в файл самостоятельно
LOG=2
# Путь к лог файлу
LOGPATH=/media/DISK_A1/system/var/log/icegenerator.log
#Телнет интерфейс
DATAPORT=8796

Перед запуском:

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

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

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

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

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

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

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

Запуск:

Если запускается в паре с сервером вещания на этомже устройстве, то можно обойтись командами:
screen -rU - присоединение к шеллу с icecast если он был ранее запущен.
ctrl+a+c - создаём ещё одно окно.
icegenerator -f /media/DISK_A1/system/etc/icegenerator/icegenerator.conf

Или если ваш стример расположен где-то в другом месте, можно создать отдельно:

screen -dmS icegenerator -U icegenerator -f /media/DISK_A1/system/etc/icegenerator/icegenerator.xml

Нюансы:

В текущей сборке не читает теги mp3.
При большом количестве файлов в директории может выдавать Segmentation fault.