Фев 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).

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

  • 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


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