Страница 1 из 1

Настройка сервера потокового вещания

Добавлено: 20 янв 2011, 14:52
Raven
Как-то разговаривая с Infernal Flame, мы коснулись темы потокового радио. И вот появилась идея создать сетевое радио... Так, чисто в виде эксперимента в целях подтверждения эрудированности :-D . Для этого я выделил немного ресурсов своего сервера. Ну а как настроил, читайте ниже.

Итак, начнем. В первую очередь нам понадобится сервер потока... Я попытался подняться на Shoutcast, но как оказалось ему для трансляции в формате mp3 не хватает... Лекарства от жадности! Эта сволочь заявила что без моих кровных $5 ей невмоготу работать! Немного пргуглив обнаружил аналогичную реализацию под лицензией GPL - серверный комплект IceCast. Что же такое IceCast? Это кросплатформенный сервер потокового вещания, поддерживающий mp3 и ogg форматы. Есть дистрибутив под ЗлоОС, а есть и под Linux.

Комплект состоит из:
  • icecast-2.3.0 – сервер раздачи аудио потока в сеть
  • ices-0.4 – утилита для посылки mp3-аудиопотока на IceCast сервер
  • ices-2.0.1 – для посылки ogg-аудиопотока на IceCast сервер
В этом примере будет рассмотрена связка из IceCast и ices-0.4, так как будем использовать mp3-аудиопоток.

Идем на сайт http://www.icecast.org/ и выкачиваем оттуда все что нужно.

Далее нужно удовлетворить зависимости. Конечно установить все из пакетов проще всего, но я не ищу легких путей.

Итак:

Код: Выделить всё

# zypper install iconv libshout-devel libvorbis-devel libxslt libxml libxslt-devel libxml-devel libxml2

Код: Выделить всё

# wget http://downloads.sf.net/lame/lame-398.tar.gz
# tar -xvf lame-398.tar.gz | cd lame-398
# ./configure --prefix=/usr
# make
# make install

# wget http://netcologne.dl.sourceforge.net/project/faac/faad2-src/faad2-2.7/faad2-2.7.tar.bz2
# tar -xvf wget faad2-2.7.tar.bz2 | cd faad2-2.7
# ./configure --prefix=/usr/local
# make && make install
Еще ему не понравилась моя версия flac, так что пришлось устанавливать то, что нравилось ему.

Код: Выделить всё

# wget http://netcologne.dl.sourceforge.net/project/flac/flac-src/flac-1.1.2-src/flac-1.1.2.tar.gz
#tar -xvf flac-1.1.2.tar.gz
#cd flac-1.1.2/
#./configure --prefix=/usr/local --with-libiconv-prefix=/usr/local --with-ogg-libraries=/usr/lib --with-ogg-includes=/usr/include
#make
#make install
Собираем ices-0.4

Код: Выделить всё

#./configure --prefix=/usr/local --with-flac=/usr/local/lib --with-perl=/usr/bin/perl --sysconfdir=/usr/local/etc
#make
#make install
Собираем icecast

Код: Выделить всё

#./configure --prefix=/usr/local --sysconfdir=/usr/local/etc
#make
#make install
Для начала создадим пользователя и группу от имени которых будет работать IceCast:

Код: Выделить всё

# groupadd icecast 
# useradd -g icecast -d /home/icecast -s /sbin/nologin icecast 
Создадим некоторые каталоги:

Код: Выделить всё

# mkdir /home/icecast/admin 
# mkdir /home/icecast/logs 
# chown icecast:icecast /home/icecast/logs 
# mkdir /home/icecast/web 
Скопируем файлы:
из /usr/local/share/icecast/admin в /home/icecast/admin
из /usr/local/share/icecast/web в /home/icecast/web

Теперь настраиваем все это:

/usr/local/etc/icecast.xml

Код: Выделить всё

<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>sourcepass</source-password>
        <relay-password>relaypass</relay-password>
        <admin-user>admin</admin-user>
        <admin-password>adminpass</admin-password>
    </authentication>

    <hostname>localhost</hostname>
    <!-- Порт на котором ожидать соединений -->
    <listen-socket>
        <port>8000</port>
    </listen-socket>
    <!-- Точка монтирования для входящего потока -->
        <mount>
    <!-- Рок жЫфф! :)) -->
             <mount-name>/rock</mount-name>
             <username>source</username>
             <password>sourcepass</password>
             <intro></intro>
        </mount>

    <fileserve>1</fileserve>

    <paths>
     <!-- Пути --> 
       <basedir>/home/icecast</basedir> 
         <logdir>/home/icecast/logs</logdir> 
          <webroot>/home/icecast/web</webroot> 
          <adminroot>/home/icecast/admin</adminroot> 
         <pidfile>/var/run/icecast.pid</pidfile>
        <alias source="/" dest="/status.xsl"/>
    </paths>

    <logging>
        <accesslog>access.log</accesslog>
        <errorlog>error.log</errorlog>
        <!-- <playlistlog>playlist.log</playlistlog> -->
        <loglevel>3</loglevel> <!-- 4 Debug, 3 Info, 2 Warn, 1 Error -->
        <logsize>10000</logsize> <!-- Max size of a logfile -->
        <!-- <logarchive>1</logarchive> -->
    </logging>

    <security>
     <!-- Безопасность -->
        <chroot>1</chroot>
        <changeowner>
            <user>icecast</user>
            <group>icecast</group>
        </changeowner>
    </security>
</icecast>
Сменим права на конфиг, поскольку он содержит пароли

Код: Выделить всё

# chown root:wheel /usr/local/etc/icecast/icecast.xml
# chmod 640 /usr/local/etc/icecast/icecast.xml
Запускаем:

Код: Выделить всё

/usr/local/icecast -b -c /usr/local/etc/icecast.xml
Теперь можно зайти на веб-интерфейс по адресам http://localhost:8000/ (статус сервера), и http://localhost:8000/admin/ (интерфейс администратора).

Если не пошло смотрим логи и ищеб баги

/usr/local/etc/ices.conf
[xml]<?xml version="1.0"?>
<ices:Configuration xmlns:ices="http://www.icecast.org/projects/ices">
<Playlist>
<File>/путь_папке_с музыкой/playlist.txt</File>
<!-- Беспорядочное проигрывание -->
<Randomize>1</Randomize>
<Type>builtin</Type>
<Module>ices</Module>
<!-- Затухание треков -->
<Crossfade>5</Crossfade>
</Playlist>

<Execution>
<!-- Запускать в режиме демона-->
<Background>1</Background>
<!-- Подробный режим вывода -->
<Verbose>1</Verbose>
<BaseDirectory>/tmp</BaseDirectory>
</Execution>

<Stream>
<Server>
<Hostname>localhost</Hostname>
<Port>8000</Port>
<!-- пароль должен быть такой же как в секции <source-password> конфига icecast -->
<Password>sourcepass</Password>
<Protocol>http</Protocol>
</Server>

<Mountpoint>/rock</Mountpoint>
<Name>Metal Stream</Name>
<Genre>Metal</Genre>
<Description>Raven's Stream</Description>
<URL>http://адрес_вашего_сервера/</URL>
<!-- Разрешить передачу на релеи - нет))) -->
<Public>0</Public>

<!-- Битрейт выходного потока-->
<Bitrate>128</Bitrate>
<!-- Перекодировка - нужна если в папке с музыкой файлы не только mp3-формата -->
<Reencode>1</Reencode>
<!-- Частота перекодировки
<Samplerate>44100</Samplerate>
-->
<Channels>2</Channels>
</Stream>
</ices:Configuration>[/xml]

Создаем плейлист:

Код: Выделить всё

# cd /папка_с_музыкой
# find ./ -type f -name \*.mp3 > playlist.txt
# find ./ -type f -name \*.flac >> playlist.txt
# find ./ -type f -name \*.ogg >> playlist.txt
Если в папке с музыкой хранятся только mp3, то можно обойтись только 1 командой. Далее придется-таки открывать в редакторе файл playlist.txt и заменять все ./ на полные пути в папку, иначе ices его не сьест.

Запускаем ices
# /usr/local/bin/ices -f /usr/local/etc/ices.conf
И в вашем любимом плеере добавляем поток http://ваш_сервер:8000/rock и наслаждаемся.

Сервер поднятый мной уже неделю доступен по адресу http://st.sysadmins.el.kg:8000/rock

Re: Настройка сервера потокового вещания

Добавлено: 23 янв 2011, 02:59
Gen1us2k
поднимается на шуткасте как два пальца об асфальт..
Хотя айскаст не ковырял.. на и не интересно уже
Радиво крутил как-то а потом забывал поднимать его, когда комп ребутица

Re: Настройка сервера потокового вещания

Добавлено: 24 янв 2011, 10:15
Raven
Gen1us2k писал(а):поднимается на шуткасте как два пальца об асфальт..
На старых версиях да, а на новых теперь за мп3 5 баксов требует