Локальная инет радиостанция при помощи icecast +ices

Рылся в своих старых записях и решил поделится с Вами инструкцией как просто и быстро поднять нормальный сервер для он лайн транслирования своего радио (mp3 файлы) и для ретрансляции внешних радиостанций.
Кому интересно прошу под кат.

Я использовал сервер под управлением FreeBSD. Считаем, что у нас есть свежее дерево портов. Начнем установки icecast:

#cd /usr/ports/audio/icecast2
#make install clean

Далее создаем пользователя для инет радио radio и группу radio и создаем каталог где это все будет лежать.

#mkdir /var/icecast
#pw group add radio
# adduser
Username:radio
Full name: Radio user
Uid (Leave empty for default):
Login group [radio]:
Login group is radio. Invite jru into other groups? []:
Login class [default]:
Shell (sh csh tcsh zsh nologin) [sh]: nologin
Home directory [/home/radio]:
Home directory permissions (Leave empty for default):
Use password-based authentication? [yes]:
Use an empty password? (yes/no) [no]:
Use a random password? (yes/no) [no]:
Enter password:
Enter password again:
Lock out the account after creation? [no]:
Username : radio
Password : ****
Full Name : Radio user
Uid : 1001
Class :
Groups : radio
Home : /home/radio
Locked : no
OK? (yes/no): yes
adduser: INFO: Successfully added (radio) to the user database.
Add another user? (yes/no): no
Goodbye!

После копируем все файлы для веб интерфейса:

cp /usr/local/share/icecast /var/icecast

Cоздаем каталог для лога:

mkdir /var/icecast/log

Cоздаем файлы для логов:

cd /var/icecast/log
touch access.log
touch error.log

Меняем права:

chown -R radio:radio /var/icecast

Далее идем смотреть файл конфига:

cd /usr/local/etc
cp icecast.xml.sample icecast.xml

Конфигурим файл. Опишу только важные параметры
Аутентификация. Первое — это пароль на подключение для трансляции через ваш сервер icecast.Второе — это логин пароль на веб интерфейс по адресу icecast_ip:8000


123

123


admin
12345678

Далее выбираем IP сервера и порт так же точку монитрования потока с ices но это позже:

8000 192.168.1.7.
/ices.

Так же я собираюсь рестранслировать радиостанции украины Киссфм (+ Киссфм в АСС), наше радио, люкс фм, и хит фм:


91.201.37.42 8000 /kiss
/kiss
1
0


91.201.37.42 8000 /kissACC
/kissACC
1
0

….
……..
195.95.206.12 8000 /HitFM
/hitfm
1
0


77.120.104.251 8000 /
/luxfm
1
0


212.26.129.222 8001 /
/nashe
1
0

Далее меняем параметры нахождения каталогов в разделе

/var/icecast

/log
/web
/admin /var/run/icecast.pid

И последнее, но не последнее по значению. Icecast не работает от root вот и мы меняем разрешения на ранее созданого юзера и группу


1


radio
radio

Далее пробуем взлететь, смотрим что он ругается:

#/usr/local/bin/icecast -c /usr/local/etc/icecast.xml

Если все хорошо прерываем через Ctrl+c и идем дальше:

Я использовал iсes0 ибо мне нужно было воспроизводить mp3 а для ogg по идее нужно использовать ices2, вроде он тоже воспроизводить mp3, но я не проверял:

#cd /usr/ports/audio/ices
#make install clean

Тут что бы не мучатся с правами делаем проще (можете сами создавать каталог где хотите):

mkdir /tmp/radio

Складываем сюда файлы mp3 и создаем плейлист:

find /tmp/radio -name *.mp3 > /tmp/radio/playlist.txt

Должен получится файл playlist.txt с таким содержимым:

/tmp/radio/Far East Movement ft. The Cataracs & Dev — Like A G6.mp3
/tmp/radio/The_Prodigy_-_Voodoo_People_(Pendulum_Remix).mp3
/tmp/radio/1.mp3

Меняем права #chmod -R 777 /tmp/radio и идем ломать файл ices.conf

cd /usr/local/etc/
cp ices.conf.dist ices.conf

Редактируем. У меня вышел такой вид (коменты Афтора):





/tmp/radio/playlist.txt

0

builtin

ices0



1

1

/tmp




192.168.1.7

8000

123

http


/ices


mp3 stream

it

Local streaming

http://gate.mydomain.com/

0


128

0


2

Далее добавляем в /etc/rc.conf строки:

icecast_enable=»YES»
icecast_flags=»-c /usr/local/etc/icecast.xml»
ices0_enable=»YES»
ices0_flags=»/usr/local/etc/ices.conf»

И пробуем взлетать:

cd /usr/local/etc/rc.d
#./icecast2 start
#./ices0 start

Открываем в баузере ссылку:
192.168.1.7:8000/status.xsl

Скачиваем m3u нужного потока и вперед.
Интернет-радио поставлено «конект по требованию», так что первый конект медленный. Кому не жалко инет трафика — поменяйте значение
1 на 0.

Так же ices как проиграет весь плейлист выключается. Как сделать по кругу не нашел пока что. Но, если запустить ices через рандом то его игрища никогда не заканчиваются smile.
В файле ices.conf меняем параметр 0 на 1 и все.

Использованные материалы: https://habr.com/post/267351/