У Icecast по сравнению с Shoutcast есть одно неплохое преимущество: он умеет работать с OGG-потоками.
Скачаем и распакуем архив с исходниками:
warehouse:~# wget http://downloads.xiph.org/releases/icecast/icecast-2.3.2.tar.gz
warehouse:~# tar zxf icecast-2.3.2.tar.gz
warehouse:~# cd icecast-2.3.2
Для сборки потребуются дополнительные исходники библиотек:
warehouse:~/icecast-2.3.2# apt-get install libogg-dev libvorbis-dev libtheora-dev libspeex-dev libcurl4-openssl-dev libxslt-dev
Теперь можно приступить к конфигурации:
warehouse:~/icecast-2.3.2# ./configure —prefix=/usr/local/icecast —with-ogg —with-theora —with-curl —with-vorbis —with-openssl
А затем к сборке и установке:
warehouse:~/icecast-2.3.2# make && make install
После установки редактируем конфигурационный файл:
warehouse:~# mcedit /usr/local/icecast/etc/icecast.xml
В целях безопасности рекомендуется найти ветку:
<security>
<chroot>0</chroot>
<!—
<changeowner>
<user>nobody</user>
<group>nogroup</group>
</changeowner>
—>
</security>
и активировать chroot:
<security>
<chroot>1</chroot>
<changeowner>
<user>nobody</user>
<group>nogroup</group>
</changeowner>
</security>
Приведу здесь свой рабочий конфиг. У меня настроена ретрансляция двух сетевых радиостанций:
<icecast>
<limits>
<clients>100</clients>
<sources>2</sources>
<threadpool>5</threadpool>
<queue-size>524288</queue-size>
<client-timeout>30</client-timeout>
<header-timeout>15</header-timeout>
<source-timeout>10</source-timeout>
<burst-on-connect>1</burst-on-connect>
<burst-size>65535</burst-size>
</limits><authentication>
<source-password>pass1</source-password>
<relay-password>pass2</relay-password>
<admin-user>admin</admin-user>
<admin-password>admin_pass</admin-password>
</authentication><shoutcast-mount>/live.nsv</shoutcast-mount>
<hostname>radio</hostname>
<listen-socket>
<port>8000</port>
</listen-socket>
<relay>
<server>xx.xx.xx.xx</server>
<port>xxxx</port>
<mount>/</mount>
<local-mount>/radio1.ogg</local-mount>
<on-demand>0</on-demand>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay><relay>
<server>xx.xx.xx.xx</server>
<port>xxxxx</port>
<mount>/</mount>
<local-mount>/radio2.ogg</local-mount>
<on-demand>0</on-demand>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay><fileserve>1</fileserve>
<paths>
<basedir>/usr/local/icecast/</basedir>
<logdir>/var/log/icecast/</logdir>
<webroot>/share/icecast/web</webroot>
<adminroot>/share/icecast/admin</adminroot>
<pidfile>/usr/local/icecast/icecast.pid</pidfile>
<alias source=»/» dest=»/status.xsl»/>
</paths><logging>
<accesslog>access.log</accesslog>
<errorlog>error.log</errorlog>
<loglevel>3</loglevel> <!— 4 Debug, 3 Info, 2 Warn, 1 Error —>
<logsize>10000</logsize> <!— Max size of a logfile —>
</logging><security>
<chroot>1</chroot>
<changeowner>
<user>nobody</user>
<group>nogroup</group>
</changeowner>
</security>
</icecast>
Далее остаётся только запустить приложение в фоне:
warehouse:~# /usr/local/icecast/bin/icecast -c /usr/local/icecast/etc/icecast.xml &
открыть URL в любом проигрывателе http://radio.local:8000/radio1.ogg и наслаждаться хорошей музыкой. 😉