Фев 18 2009

IceCast2 и Ices0 — строим интернет радио.

В портах FreeBSD есть все необходимое для создания своего собственного интернет радио. Нам понадобится сервер IceCast2, к нему будут подключаться слушатели и слушать ваш набор музыки, который вы транслируете на сервер с помощью Ices0.
Начнем с установки IceCast2:

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


Установка проходит без дополнительных вопросов. Конфигурационный файл icecast2 будет иметь такой вид(сам файл в формате xml):

<icecast>
    <limits>
        <!-- Максимальное количество подключений к серверу -->
        <clients>500</clients>
        <!-- Количество источников   -->
        <sources>7</sources>
         <!--Количеество подпроцессов обслуживающих клиентов   -->
        <threadpool>12</threadpool>
        <!-- Размер очереди вещания    -->
        <queue-size>1572864</queue-size>
        <!-- Время ожидания ответа от клиента (судя по документации не используется   -->
        <client-timeout>30</client-timeout>
         <!-- Время ожидания запроса от клиента     -->
        <header-timeout>15</header-timeout>
        <!-- Время ожидания данных от источника сигнала, при
 превышении интервала, источник будет отключен    --> 
        <source-timeout>600</source-timeout>
        <!-- Режим при котором, подключившийся клиент получит данные для заполнения локального буфера проигрывателя   --> 
        <burst-on-connect>1</burst-on-connect>
        <!-- Размер буфера отправляемого клиенту    -->     
        <burst-size>262140</burst-size>
    </limits>
<!-- Секция отвечающая за авторизацию   -->
    <authentication>
         <!--С этим паролем должны подключаться источники сигнала    -->  
        <source-password>source-pass</source-password>
         <!--Пароль для релаев(мы не используем в нашей задаче)    -->
        <relay-password>relay-pass</relay-password>
         <!--Логин и пароль администратора    --> 
        <admin-user>admin</admin-user>
        <admin-password>admin-pass</admin-password>
    </authentication>
    <!-- Имя хоста   -->  
    <hostname>hilik.org.ua</hostname>
     <!--IP адрес и порт на котором будет слушать сервер    -->
    <listen-socket>
        <port>8000</port>
        <bind-address>89.251.34.107</bind-address>
    </listen-socket>
     <!-- Использовать ссылки в виде статических файлов    -->
    <fileserve>1</fileserve>
    <!-- Пути   --> 
    <paths>
        <basedir>/usr/local/share/icecast</basedir>
        <logdir>/var/log/icecast</logdir>
        <webroot>/usr/local/share/icecast/web</webroot>
        <adminroot>/usr/local/share/icecast/admin</adminroot>
        <alias source="/" dest="/status.xsl"/>
    </paths>
    <!-- В какие файлы писать события    --> 
    <logging>
        <accesslog>access.log</accesslog>
        <errorlog>error.log</errorlog>
        <loglevel>4</loglevel>
        <logsize>10000</logsize>
    </logging>
    <!-- Секция безопасности    --> 
    <security>
        <chroot>0</chroot>
        <changeowner>
            <user>nobody</user>
            <group>nogroup</group>
        </changeowner>
    </security>
</icecast>

Теперь можно поставить разрешение на запуск IceCast2:

echo "icecast_enable=YES">>/etc/rc.conf

и запустим его:

/usr/local/etc/rc.d/icecast2 start

На этом с сервером мы покончили. Если вы подключитесь браузером к http://:8000/, то увидите вебинтерфейс icecast2.

Теперь можно переходить к установке и настройке источника потока.
Установка производится из:

cd /usr/ports/audio/ices0
make install clean

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

┌────────────────────────────────────────────────────────────────────┐
│                      Options for ices 0.4_7                        │
│ ┌────────────────────────────────────────────────────────────────┐ │
│ │       [X] FLAC    Enable flac transcoding support              │ │
│ │       [X] FAAD    Enable mpep4 transcoding support             │ │
│ │       [X] VORBIS  Enable ogg/vorbis transcoding support        │ │
│ │       [ ] PYTHON  Enable Python scripting                      │ │
│ │                                                                │ │
│ │                                                                │ │
│ │                                                                │ │
│ │                                                                │ │
│ │                                                                │ │
│ │                                                                │ │
│ │                                                                │ │
│ │                                                                │ │
│ │                                                                │ │
│ │                                                                │ │
│ │                                                                │ │
├─└────────────────────────────────────────────────────────────────┘─┤
│                       [  OK  ]     Cancel                          │
└────────────────────────────────────────────────────────────────────┘

В меню настроек мы описали, что у нас будет возможность перекодировать оригинальные файлы с использованием библиотек faad, faac и vorbis.
Теперь у нас появился еще один конфиг и что характерно тоже в формате xml:

<?xml version="1.0"?>
<ices:Configuration xmlns:ices="http://www.icecast.org/projects/ices">
  <Playlist>
       <!--Путь к файлу содержащему список песен которые будут проигрываться -->
       <File>/home/hilik/playlist.txt</File>
       <!-- 1 - проигрывать случайным образом, 0 - по порядку -->
       <Randomize>1</Randomize>
       <!-- Модуль плейлиста -->
       <Type>builtin</Type>
       <Module>ices</Module>
        <!-- Пауза перед следующим файлом 5 секунд --> 
        <Crossfade>5</Crossfade>
    </Playlist>
 
  <Execution>
       <Background>1</Background>
       <Verbose>0</Verbose>
       <BaseDirectory>/tmp</BaseDirectory>
  </Execution>
 
  <Stream>
    <Server>
      <!-- Сервер на который мы будем отправлять поток -->
      <Hostname>89.252.34.107</Hostname>
      <Port>8000</Port>
      <Password>source-pass</Password>
      <Protocol>http</Protocol>
    </Server>
    <!-- Точка монтирования на сервере и описание нашего потока -->
    <Mountpoint>/ices</Mountpoint>
    <Name>Default stream</Name>
    <Genre>Default genre</Genre>
    <Description>Default description</Description>
    <URL>http://89.252.34.107:8000/</URL>
    <Public>0</Public>
    <!-- Настройка передаваемого потока -->
    <Bitrate>128</Bitrate>
    <Reencode>0</Reencode>
    <Channels>2</Channels>
  </Stream>
</ices:Configuration>

Теперь разрешим его старт в /etc/rc.conf:

echo "ices0_enable=YES" >>/etc/rc.conf

А перед запуском создадим, обязательно файл плейлиста. У меня он находится в /home/hilik/playlist.txt
Внутри у него список mp3 файлов с полными путями.
Теперь запустим его.

/usr/local/etc/rc.d/ices0 start

Теперь с помощью браузера подключимся к нашему серверу(в моем случае это http://hilik.org.ua:8000), на экране мы увидим примерно такую картину:
ices1

По ссылке «Click to listen» мы перейдем к прослушиванию радио, для этого должен быть установлен проигрыватель поддерживающий потоковое аудио(winamp, totem, windows media player).

На этом настройка окончена.

Добавить в закладки:

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru
  • By crud, 04.03.2009 @ 19:43

    Фаллбек моунт поинт еще надобыло указать.

  • By daskel, 16.05.2009 @ 18:58

    Огромное спасибо за статью. Весь инет перелопалил в поисках инстукции по установке и настройке, и везде возникали какие то проблемы, то одного не хватает, то другого, то ошибки при установке или еще что. А тут действительно установка IceCast в двух командах заключается, всё дополнительное само скачивается и устанавливается.

  • By Bezlikiy, 04.10.2009 @ 22:12

    hiall
    чтото у меня не вышло…
    запускаю icecast — получаю web морду
    далее
    ices -c /usr/loal/etc/ices.xml
    или
    ices -c /usr/loal/etc/ices.xml -F -D /home/icecast/music/playlist.txt

    получаю надпись в консоле, но когда обращаюсь
    192.168.0.40:8000 у меня нет точки монтирования, т.е. ее не вижу
    если руками дописать в адресе — то результат нулевой

    вот конфиг ices:

    /home/icecast/music/playlist.txt
    <!— playlist.txt —>
    1
    builtin
    ices
    <!— 2 —>

    1
    0
    /tmp

    <!— localhost —>
    192.168.0.40
    8000
    password
    http

    <!— /test —>
    <!— /home/icecast/music/ —>

    /test
    <!— trans
    trans
    /home/icecast/music/_remix_.mp3
    —>

    <!— ices.dump —>
    Default stream
    Default genre
    Default description
    http://192.168.0.40:8000
    <!— http://192.160.0.40/music —>
    0

    128
    1
    44100
    2

    как видно — что я тока не делал — ну не запускается — прошу помогите — где я ошибаюсь…

  • By gx, 05.10.2009 @ 00:10

    Спасибо, завелось!

Other Links to this Post


Украинская Баннерная Сеть