Рылся в своих старых записях и решил поделится с Вами инструкцией как просто и быстро поднять нормальный сервер для он лайн транслирования своего радио (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
<authentication> <!-- Sources log in with username 'source' --> <source-password>123</source-password> <!-- Relays log in username 'relay' --> <relay-password>123</relay-password> <!-- Admin logs in with the username given below --> <admin-user>admin</admin-user> <admin-password>12345678</admin-password> </authentication>
Далее выбираем IP сервера и порт так же точку монитрования потока с ices но это позже:
<listen-socket> <port>8000</port> <bind-address>192.168.1.7</bind-address>. <shoutcast-mount>/ices</shoutcast-mount>. </listen-socket>
Так же я собираюсь рестранслировать радиостанции украины Киссфм (+ Киссфм в АСС), наше радио, люкс фм, и хит фм:
<relay> <server>91.201.37.42</server> <port>8000</port> <mount>/kiss</mount> <local-mount>/kiss</local-mount> <on-demand>1</on-demand> <relay-shoutcast-metadata>0</relay-shoutcast-metadata> </relay> <relay> <server>91.201.37.42</server> <port>8000</port> <mount>/kissACC</mount> <local-mount>/kissACC</local-mount> <on-demand>1</on-demand> <relay-shoutcast-metadata>0</relay-shoutcast-metadata> </relay> .... <relay>........ <server>195.95.206.12</server> <port>8000</port> <mount>/HitFM</mount> <local-mount>/hitfm</local-mount> <on-demand>1</on-demand> <relay-shoutcast-metadata>0</relay-shoutcast-metadata> </relay> <relay> <server>77.120.104.251</server> <port>8000</port> <mount>/</mount> <local-mount>/luxfm</local-mount> <on-demand>1</on-demand> <relay-shoutcast-metadata>0</relay-shoutcast-metadata> </relay> <relay> <server>212.26.129.222</server> <port>8001</port> <mount>/</mount> <local-mount>/nashe</local-mount> <on-demand>1</on-demand> <relay-shoutcast-metadata>0</relay-shoutcast-metadata> </relay>
Далее меняем параметры нахождения каталогов в разделе
<basedir>/var/icecast</basedir> <logdir>/log</logdir> <webroot>/web</webroot> <adminroot>/admin</adminroot> <pidfile>/var/run/icecast.pid</pidfile>
И последнее, но не последнее по значению. Icecast не работает от root вот и мы меняем разрешения на ранее созданого юзера и группу
<security> <chroot>1</chroot> <changeowner> <user>radio</user> <group>radio</group> </changeowner> </security>
Далее пробуем взлететь, смотрим что он ругается:
#/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
Редактируем. У меня вышел такой вид (коменты Афтора):
<?xml version="1.0"?> <ices:Configuration xmlns:ices="http://www.icecast.org/projects/ices"> <Playlist> <!-- Показываем где лежит плейлист --> <File>/tmp/radio/playlist.txt</File> <!-- хотим что бы играло случайно ставим 1. . --> <Randomize>0</Randomize> <!-- тип плей листа, менять не нужно --> <Type>builtin</Type> <!-- нужно только для плейлиста на Perl И pyton, для нашего случая не нужно--> <Module>ices0</Module> <!-- если нужно что бы между песнями было затухание то разремируем и выставляем в секундах. по умочанию выключено т.е. 0 <Crossfade>5</Crossfade> --> </Playlist> <Execution> <!-- запускать демоном ставьте 1 --> <Background>1</Background> <!-- хотите видеть все логи в файле ставим 1 --> <Verbose>1</Verbose> <!-- Каталог где будет находится лог и pid файлы --> <BaseDirectory>/tmp</BaseDirectory> </Execution> <Stream> <Server> <!-- ip icecast сервера куда хотим прицепится --> <Hostname>192.168.1.7</Hostname> <!-- порт --> <Port>8000</Port> <!-- пароль на конект что бы транслировать icecast server --> <Password>123</Password> <!-- Если сервер Shoutcast ставим "icy", icecast 1.x ставим "xaudiocast", а если icecast 2.x то "http". --> <Protocol>http</Protocol> </Server> <!-- точка монтирования потока на айскаст сервера --> <Mountpoint>/ices</Mountpoint> <!-- The name of the dumpfile on the server for your stream. DO NOT set this unless you know what you're doing. не понял за чем не менял <Dumpfile>ices.dump</Dumpfile> --> <!-- Имя вашей трансляции, а не имя трека --> <Name>mp3 stream</Name> <!-- Жанр, или стиль вашей трансляции --> <Genre>it</Genre> <!-- большое описание вашей трансляции --> <Description>Local streaming</Description> <!-- ссылока вашей трансляции --> <URL>http://gate.mydomain.com/</URL> <!--0 если не хотите сделать ваш сервер публичным и 1 если хотите --> <Public>0</Public> <!--качество трансляции, меняйте осторожно--> <Bitrate>128</Bitrate> <!-- если поставить 1 то ices попробует на лету пережимать трансляцию при помози liblame в нужное качество потока --> <Reencode>0</Reencode> <!-- Number of channels to reencode to, 1 for mono or 2 for stereo --> <!-- Sampe rate to reencode to in Hz. Leave out for LAME's best choice <Samplerate>44100</Samplerate> --> <Channels>2</Channels> </Stream> </ices:Configuration>
Далее добавляем в /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 нужного потока и вперед.
Интернет-радио поставлено «конект по требованию», так что первый конект медленный. Кому не жалко инет трафика — поменяйте значение
<on-demand>1</on-demand> на <on-demand>0</on-demand>.
Так же ices как проиграет весь плейлист выключается. Как сделать по кругу не нашел пока что. Но, если запустить ices через рандом то его игрища никогда не заканчиваются smile.
В файле ices.conf меняем параметр 0 на 1 и все.
ссылка на оригинал статьи http://habrahabr.ru/post/267351/
Добавить комментарий