ОсновноеRadiotalkПользовательское
Общие вопросы по интернет радио вещанию
6   •   Посмотреть все темы

Инструкция по установке и настройке Icecast и Ices под Linux

 

132
Henk @Henk
IceCast

Что же такое IceCast? Это сервер потокового вещания, поддерживающий mp3 и ogg форматы.

Нам потребуются:

приложения:
icecast-2.3.1 - серверное приложение

ices-0.4 - утилита для посылки mp3-аудиопотока на IceCast сервер
либо
ices-2.0.1 - для посылки ogg-аудиопотока на IceCast сервер

библиотеки:
libshout-2.2.2
libmp3lame-3.97

В этом примере будет рассмотрена связка из IceCast-2.3.1 и ices-0.4, так как будем использовать mp3-аудиопоток.

Установка библиотек

libmp3lame-3.97

# ./configure --prefix=/usr
# make && make install

libshout-2.2.2

# ./configure --with-ogg --with-vorbis --with-lame --prefix=/usr
у меня в системе уже была установлена libvorbis, в принципе можно было и без --with-ogg --with-vorbis запускать, конфигуратор должен всё сам найти
# make && make install

Установка ices-0.4

# ./configure --with-lame
# make && make install

Установка IceCast

И тут выясняется, что для сборки IceCast требуется наличие в системе ещё нескольких библиотек:
libxml2
libxslt
curl (>= version 7.10 required)
ogg/vorbis - (>= version 1.0 required)

С curl'ом пришлось повозиться. Оказалось, что с новым curl-7.16.2 IceCast отказался собираться, поэтому я использовал curl-7.15.5.

# ./configure
# make && make install

IceCast и всё необходимое для его работы мы установили.

Настройка IceCast

Для начала создадим пользователя и группу от имени которых будет работать 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/share/icecast/doc/icecast.xml.dist в /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>password</source-password>
<relay-password>password</relay-password>
<admin-user>admin</admin-user>
<admin-password>password</admin-password>
</authentication>

<hostname>localhost</hostname>
<listen-socket>
<!-- Порт на котором ожидать соединений -->
<port>8000</port>
</listen-socket>
<fileserve>1</fileserve>

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

<logging>
<accesslog>access.log</accesslog>
<errorlog>error.log</errorlog>
<loglevel>4</loglevel> <!-- 4 Debug, 3 Info, 2 Warn, 1 Error -->
<logsize>10000</logsize>
</logging>

<security>
<!-- Безопасность -->
<chroot>0</chroot>
<changeowner>
<user>icecast</user>
<group>icecast</group>
</changeowner>
</security>
</icecast>



Ограничим доступ к конфигу IceCast (тк он содержит пароли):

# chown root:root /usr/local/etc/icecast.xml
# chmod 640 /usr/local/etc/icecast.xml

Запустим IceCast сервер:

# icecast -b -c /usr/local/etc/icecast.xml

Теперь можно зайти на веб-интерфейс по адресам:
********** (статус сервера), и
********** (интерфейс администратора).

Настройка ices

После установки ices в каталоге /usr/local/etc/ должен быть файл ices.conf.dist
Скопируем его в /usr/local/etc/ices.conf и отредактируем:
Код:
<?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>
</Playlist>

<Execution>
<Background>1</Background>
<Verbose>0</Verbose>
<BaseDirectory>/tmp</BaseDirectory>
</Execution>

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

<Mountpoint>/test</Mountpoint>
<Name>Default stream</Name>
<Genre>Default genre</Genre>
<Description>Default description</Description>
<URL>http://localhost:8000/test</URL>
<Public>0</Public>

<Bitrate>128</Bitrate>
<Reencode>1</Reencode>
<Samplerate>44100</Samplerate>
<Channels>2</Channels>
</Stream>
</ices:Configuration>



Ограничим доступ к /usr/local/etc/ices.conf:

# chmod 640 /usr/local/etc/ices.conf

Последний этап

Пусть у нас есть директория /media/music с несколькими mp3 файлами.
Создадим playlist для этой директории:

# cd /media/music
# ls > playlist.txt

Запустим ices:

# ices -c '/usr/local/etc/ices.conf'

По адресу ********** должна играть ваша музыка

Для организации нескольких каналов музыки используйте возможности командной строки ices, например:

# ices -c '/usr/local/etc/ices.conf' -D '/media/music/' -F '/media/music/album1/playlist.txt' -m 'sample1' -u '**********' -d 'sample1 descr' -n 'blablabla1' -g 'test1' -b 192 -B
# ices -c '/usr/local/etc/ices.conf' -D '/media/music/' -F '/media/music/album2/playlist.txt' -m 'sample2' -u '**********' -d 'sample2 descr' -n 'blablabla2' -g 'test2' -b 160 -B

таким образом, будут организованы 2 канала с музыкой.

Ну и конечно же, неплохо сделать так, чтобы ices запускался не под root'ом, как в примерах выше. Для этого можно завести отдельного пользователя, либо использовать пользователя icecast. Строка запуска ices немного изменится:

# su icecast -c "ices ..."

Всё представленное выше работает на данном сервере по адресу: **********
Спасибо за внимание, надеюсь, статья кому-нибудь будет полезна. © Siava.Ru

Оригинал - **********
Я в этом не очень секу, поэтому исправляйте. Я думаю полезный фак.

Отредактировано Модератором - 07.03.2011
4
Александр @amelanin
полезный... но... я вот думаю а как присобачить IceCast на юникс хостинг.... хотя различий в принципе не так уж много.

132
Henk @Henk
какие различия? ssh это вроде все что нужно

2605
Александр @AlexIT
Мануал неплохой, даже хороший.
Автору респект. У меня есть похожий на английском.. :)

8
daskel @daskel
а можно чуть подробнее узнать про установку? а то написано пара слов:
Установка библиотек
libmp3lame-3.97
# ./configure --prefix=/usr
# make && make install

не могу понять каким обрадом это выполнить

8
mOba @mOba
Блин, под винду есть Iсes?

2605
Александр @AlexIT
Зачем? Под винду есть много другого софта.
**********

57
Алексей @radioset
daskel пишет:

а можно чуть подробнее узнать про установку? а то написано пара слов:
Установка библиотек
libmp3lame-3.97
# ./configure --prefix=/usr
# make && make install

не могу понять каким обрадом это выполнить

Человек видимо писал сам для себя очевидные вещи.... которые простому обывателю не очевидны.... а вобще заметил .... тут люди пытаются зделать из простого радио какое то таинственное образование, в котором тока посвящённые люди что то соображают, однако думаю в наш век это не модно))) не надо делать из мухи слона, даже очень сложное дело можно объяснить прохожему на пальцах, смысл тогда какой в этой статье если её тока спецы понимают??
P.S. Зачем объяснять чайникам очевидно???? это очевидно, творческий человек мало разбирается в технических тонкостях но зделает ещё что то, что приятно будет слушать, чем у человека всё понимающего..... (хотя есть и исключения, где и там и там шарит))

1400
Pheoru @Pheoru
Тема называется "Инструкция по установке и настройке Icecast и Ices под Linux"
Что такое Linux? **********

6245
Тарас @tarasian666
radioset пишет:

daskel пишет:

а можно чуть подробнее узнать про установку? а то написано пара слов:
Установка библиотек
libmp3lame-3.97
# ./configure --prefix=/usr
# make && make install

не могу понять каким обрадом это выполнить

Человек видимо писал сам для себя очевидные вещи.... которые простому обывателю не очевидны.... а вобще заметил .... тут люди пытаются зделать из простого радио какое то таинственное образование, в котором тока посвящённые люди что то соображают, однако думаю в наш век это не модно))) не надо делать из мухи слона, даже очень сложное дело можно объяснить прохожему на пальцах, смысл тогда какой в этой статье если её тока спецы понимают??
P.S. Зачем объяснять чайникам очевидно???? это очевидно, творческий человек мало разбирается в технических тонкостях но зделает ещё что то, что приятно будет слушать, чем у человека всё понимающего..... (хотя есть и исключения, где и там и там шарит))

реально, тема так написана что те кто поняли все и так все знали до того

6245
Тарас @tarasian666
а как насчет ices0 с aac+ ?
к примеру столкнулся с проблемой при компиляции error: mp4.h: No such file or directory
хотя все нужные пакеты установлены.
Features:
XML : yes
Python : yes
Perl : no
LAME : yes
Vorbis : yes
MP4 : yes
FLAC : yes

при сборке ошибки
in_mp4.c:32:17: error: mp4.h: No such file or directory
in_mp4.c:37: error: expected specifier-qualifier-list before ‘MP4FileHandle’
in_mp4.c: In function ‘ices_mp4_open’:
in_mp4.c:57: error: ‘MP4FileHandle’ undeclared (first use in this function)
in_mp4.c:57: error: (Each undeclared identifier is reported only once
in_mp4.c:57: error: for each function it appears in.)
in_mp4.c:57: error: expected ‘;’ before ‘mp4file’
in_mp4.c:58: error: ‘MP4TrackId’ undeclared (first use in this function)
in_mp4.c:58: error: expected ‘;’ before ‘track’
in_mp4.c:71: error: ‘mp4file’ undeclared (first use in this function)
in_mp4.c:71: warning: implicit declaration of function ‘MP4Read’
in_mp4.c:71: error: ‘MP4_INVALID_FILE_HANDLE’ undeclared (first use in this function)
in_mp4.c:75: error: ‘track’ undeclared (first use in this function)
in_mp4.c:75: error: ‘MP4_INVALID_TRACK_ID’ undeclared (first use in this function)
in_mp4.c:76: warning: implicit declaration of function ‘MP4GetNumberOfTracks’
in_mp4.c:76: error: ‘MP4_AUDIO_TRACK_TYPE’ undeclared (first use in this function)
in_mp4.c:78: warning: implicit declaration of function ‘MP4FindTrackId’
in_mp4.c:86: warning: implicit declaration of function ‘MP4GetTrackESConfiguration’
in_mp4.c:121: error: ‘mp4_in_t’ has no member named ‘mp4file’
in_mp4.c:122: error: ‘mp4_in_t’ has no member named ‘track’
in_mp4.c:123: error: ‘mp4_in_t’ has no member named ‘decoder’
in_mp4.c:124: error: ‘mp4_in_t’ has no member named ‘cur_sample’
in_mp4.c:130: warning: assignment from incompatible pointer type
in_mp4.c:138: warning: implicit declaration of function ‘MP4Close’
in_mp4.c: In function ‘ices_mp4_readpcm’:
in_mp4.c:157: warning: implicit declaration of function ‘MP4ReadSample’
in_mp4.c:157: error: ‘mp4_in_t’ has no member named ‘mp4file’
in_mp4.c:157: error: ‘mp4_in_t’ has no member named ‘track’
in_mp4.c:157: error: ‘mp4_in_t’ has no member named ‘cur_sample’
in_mp4.c:164: error: ‘mp4_in_t’ has no member named ‘decoder’
in_mp4.c: In function ‘ices_mp4_close’:
in_mp4.c:186: error: ‘mp4_in_t’ has no member named ‘decoder’
in_mp4.c:187: error: ‘mp4_in_t’ has no member named ‘mp4file’

Отредактировано tarasian666 - 19.11.2009
22
bizkit-leech @bizkit-leech
при выполнении комманды (Установка ices-0.4) ./configure --with-lame && make && make install съюза у меня сругалась could not find usable libshout.
Дистриб юзаю - openSUSE 10.3. пробовал на 11.0 - ситуация аналогичная

libxml2
libxslt
curl (>= version 7.10 required)
ogg/vorbis - (>= version 1.0 required)

выше указанные либы стоят..

плз. подскажите с чем это может быть связано и есть ли решение данной проблемы?

Отредактировано bizkit-leech - 26.01.2010
6245
Тарас @tarasian666
версии.. может не хавать даже если либы чуть новее

22
bizkit-leech @bizkit-leech
возможно версии.. но если мне не изменяет память то я специально пересобирал либы и при этом ставил указанные в мануале версии. да и тут ещё мнение есть одно что в сусе пути криво выставлены, возможно из-за этого. хмм.. нужно ещё разок попробовать заморочится) или заюзать другой дистриб

6245
Тарас @tarasian666
на всякий случай спрошу... либы стоят для разработчиков? (dev)

Отредактировано tarasian666 - 26.01.2010
22
bizkit-leech @bizkit-leech
tarasian666 пишет:

на всякий случай спрошу... либы стоят для разработчиков? (dev)

да

6245
Тарас @tarasian666
мне помогал ход конем... качать не либы а src нужной версии и собирать их тоже

Отредактировано tarasian666 - 26.01.2010
22
bizkit-leech @bizkit-leech
за ближайшие пару дней попробую пересобрать пакеты с либами, если не получится попробую icecast2 или другой дистриб но думаю что до этого не дойдёт

зы deadradio.kicks-ass.net - интересный прокет и контент. домой приду полушаю)

Отредактировано bizkit-leech - 26.01.2010
6245
Тарас @tarasian666
bizkit-leech пишет:

если не получится попробую icecast2 или другой дистриб но думаю что до этого не дойдёт

тут я чет не понял...
зьі спс )

22
bizkit-leech @bizkit-leech
libxml2
libxslt

какие версии данных либ лучше использовать? если есть возможность предоставить ссылку, буду весьма признателен..