среда, 19 августа 2009 г.

icecast2 Трансляция/Ретрансляция радио howto

Делаем радио для трансляции в сеть того что слушаем и для ретрансляции интернет радио
Установим icecast2
sudo aptitude install icecast2
Открываем конфиг sudo gedit /usr/share/icecast2/icecast.xml
<icecast>
<limits>
<clients>10</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>password</source-password>
<relay-password>password</relay-password>

<admin-user>admin</admin-user>
<admin-password>password_admin</admin-password>
</authentication>
Если собираетесь публиковать информацию о аудио-потоках вашего сервера в icecast2 YP каталогах, то следующий раздел вам в этом поможет -->



<directory>
<yp-url-timeout>15</yp-url-timeout>
<yp-url>http://dir.xiph.org/cgi-bin/yp-cgi</yp-url>
</directory>
Настройки интерфейсов сервера
<hostname>localhost</hostname>
<!--<port>8000</port> -->
<!--<bind-address>127.0.0.1</bind-address>-->

<listen-socket>
<port>8000</port>
</listen-socket>

<listen-socket>
<port>8001</port>
<bind-address>127.0.0.1</bind-address>
</listen-socket>
Определяем какие интернет радио будем транслировать
<!--
<relay>
<server>209.51.161.54</server>
<port>8072</port>
<mount>/</mount>
<local-mount>/radio_rock.mp3</local-mount>
<on-demand>1</on-demand>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>

<relay>
<server>81.88.113.18</server>
<port>1072</port>
<mount>/</mount>
<local-mount>/radio_pop.mp3</local-mount>
<on-demand>1</on-demand>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>

<relay>
<server>scfire-nyk-aa03.stream.aol.com</server>
<port>80</port>
<mount>/stream/1010</mount>
<local-mount>/jazz.mp3</local-mount>
<on-demand>1</on-demand>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>

<relay>
<server>205.188.215.226</server>
<port>8020</port>
<mount>/</mount>
<local-mount>/guitar.mp3</local-mount>
<on-demand>1</on-demand>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>

<relay>
<server>72.51.33.149</server>
<port>8000</port>
<mount>/</mount>
<local-mount>/skyrock.mp3</local-mount>
<on-demand>1</on-demand>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>

<relay>
<server>www.hitroe.com</server>
<port>8000</port>
<mount>/relay_low.ogg</mount>
<local-mount>/hitroe.ogg</local-mount>
<on-demand>1</on-demand>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>

-->
<relay>
<server>85.21.79.5</server>
<port>8073</port>
<mount>/</mount>
<local-mount>/Corbina_rock.mp3</local-mount>
<on-demand>1</on-demand>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
Радио, которое будет транслироватся с mpd сервера
<mount>
<mount-name>/radio.mp3</mount-name>
<username>username</username>
<password>password</password>
<max-listeners>5</max-listeners>
<dump-file>/tmp/dump-radio.mp3</dump-file>
<burst-size>65535</burst-size>
<public>1</public>
<bitrate>128</bitrate>
<type>audio/mpeg</type>
<subtype>mp3</subtype>
<mp3-metadata-interval>8192</mp3-metadata-interval>
<hidden>0</hidden>
<!-- <fallback-mount>/example2.ogg</fallback-mount>
<fallback-override>1</fallback-override>
<fallback-when-full>1</fallback-when-full>
<intro>/example_intro.ogg</intro>
<hidden>1</hidden>
<no-yp>1</no-yp>
<authentication type="htpasswd">
<option name="filename" value="myauth"/>
<option name="allow_duplicate_users" value="0"/>
</authentication>
-->
</mount>
<fileserve>1</fileserve>

<shoutcast-mount>/stream</shoutcast-mount>
В данном разделе определяем пути используемые icecast2
<paths>
<basedir>/usr/share/icecast2</basedir>
<logdir>/var/log/icecast2</logdir>
<webroot>/usr/share/icecast2/web</webroot>
<adminroot>/usr/share/icecast2/admin</adminroot>
<!-- <pidfile>/usr/share/icecast2/icecast.pid</pidfile> -->
<alias source="/" dest="/status.xsl"/>
</paths>
Раздел логирования
<logging>
<accesslog>access.log</accesslog>
<errorlog>error.log</errorlog>
<!-- <playlistlog>playlist.log</playlistlog> -->
<loglevel>4</loglevel> <!-- 4 Debug, 3 Info, 2 Warn, 1 Error -->
<logsize>10000</logsize> <!-- Max size of a logfile -->
</logging>
Раздел безопасности
В нем определяем будем ли стартовать icecast2 в chroot окружении, (0 - не используется, 1 - включено) -
<security>
<chroot>0</chroot>
<!--
<changeowner>
<user>nobody</user>
<group>nogroup</group>
</changeowner>
-->
</security>
</icecast>
Напоследок необходимо изменить параметр Enable на True в файле /etc/default/icecast2
ENABLE=true
На этом настройки icecast2 закончена.
Запускаем icecast2
sudo /etc/init.d/icecast2 start
По адресу http://ip_adres:port должно открытся страница icecast
и через / указываем аудио поток, например
http://localhost:8000/radio_rock.mp3
Для того чтобы транслировать с mpd, необходимо изменить его настройки:
Все настройки переписывать не буду, только те которые необходимы для радио(как настроить mpd описывал ранее), итак:
user "username"
audio_output {
type "shout"
name "My Shout Stream"
host "localhost"
port "8000"
mount "/radio.mp3"
password "password"
# quality "5.0"
bitrate "128"
format "44100:16:1"
user "username" # optional
# description "My Stream Description" # optional
# genre "jazz" # optional
# public "yes" # optional
}
Запускаем MPD
sudo /etc/init.d/mpd start
идем по ссылке http://127.0.0.1:8000
Там должно быть указано какое радио играет, а это те интернет радио, которые мы транслируем и наша музыка с mpd. Замечу, для того чтобы транслировать музыку с mpd, нужно запускать его после запуска icecast2.

5 комментариев:

Skorpion комментирует...

Статейка полезная, но стоит поставить ссылку где именно "как настроить mpd описывал ранее" - где это описание.

В общем настроил как описано. Все работает - но при смене песни, сервер говорит что он играет новую композицию, а клиент затыкается на предыдущей композиции и останавливает воспроизведение.

В чем проблема?

И как вывесить потоковое радио на сайт? чтото флеш плеер не хочет воспроизводить поток...

Alexey Kostryukov комментирует...

спасибо за замечание, поправил

поток идет в мп3, может поэтому флеш не играет ?

Анонимный комментирует...

Доброго времени суток .

У меня вот какой вопрос есть связка icecast2 + mpd . Все работает нормально единственное есть не большие недочеты которые я бы хотел решить :

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

2. хотелось бы сделать так что бы когда диджей подключался радио которое воспроизводится автодиджеем через плейлист отключалось пока диджей в эфире .

3. плавный переход подключение и отключения диджея

Анонимный комментирует...

Через HTML5 прекрасно вещается mp3.

your-health комментирует...

Не подскажете как сделать так, чтобы потоки игрались только на моем домене, а на других сайтах нет. Есть ли какая встроенная защит от такого в Icecast?