|
|
Автор |
Статья |
Siava Злобный адмЫн
Зарегистрирован: 07.12.2003 Статьи (FAQ): 16 Комментарии: 21
|
Добавлено: Вс 11 Ноя, 2007 01:47 |
|
|
IceCast
Что же такое IceCast? Это сервер потокового вещания, поддерживающий mp3 и ogg форматы.
Нам потребуются:
приложения:
- icecast-2.3.1 - серверное приложение
- ices-0.4 - утилита для посылки mp3-аудиопотока на IceCast сервер
либо
- ices-2.0.1 - для посылки ogg-аудиопотока на IceCast сервер
библиотеки:
В этом примере будет рассмотрена связка из 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 требуется наличие в системе ещё нескольких библиотек:
С 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
Теперь можно зайти на веб-интерфейс по адресам:
http://localhost:8000/ (статус сервера), и
http://localhost:8000/admin/ (интерфейс администратора).
Настройка 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'
По адресу http://localhost:8000/test должна играть ваша музыка
Для организации нескольких каналов музыки используйте возможности командной строки ices, например:
# ices -c '/usr/local/etc/ices.conf' -D '/media/music/' -F '/media/music/album1/playlist.txt' -m 'sample1' -u 'http://siava.ru:8000/sample1' -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 'http://siava.ru:8000/sample2' -d 'sample2 descr' -n 'blablabla2' -g 'test2' -b 160 -B
таким образом, будут организованы 2 канала с музыкой.
Ну и конечно же, неплохо сделать так, чтобы ices запускался не под root'ом, как в примерах выше. Для этого можно завести отдельного пользователя, либо использовать пользователя icecast. Строка запуска ices немного изменится:
# su icecast -c "ices ..."
Всё представленное выше работает на данном сервере по адресу: http://siava.ru:8000
Спасибо за внимание, надеюсь, статья кому-нибудь будет полезна. © Siava.Ru |
|
|
Автор |
Комментарии |
Siava Злобный адмЫн
Зарегистрирован: 07.12.2003 Статьи (FAQ): 16 Комментарии: 21
|
Добавлено: Пн 12 Ноя, 2007 16:20 |
|
|
В процессе использования был замечен глюк с буферизацией некоторых треков. Установив в настройках ices параметр:
Код: | <Reencode>1</Reencode> |
проблема устранилась. |
|
Siava Злобный адмЫн
Зарегистрирован: 07.12.2003 Статьи (FAQ): 16 Комментарии: 21
|
Добавлено: Ср 14 Ноя, 2007 00:39 |
|
|
Использование Reencoding'а добавило ~7% нагрузки на двухядерный Athlon X2 4800+ на один процесс ices.
В случае, если битрейт треков совпадает с reencoding-битрейтом загрузка процессора не более 0.2%.
Вывод: хотите разгрузить систему, если она слабая, один раз конвертните свои треки в нужный и постоянный битрейт, с которым собираетесь проигрывать в вашем онлайн-радио |
|
Strider медиамагнат
Зарегистрирован: 20.02.2007 Статьи (FAQ): 1 Комментарии: 4 Город: Сертолово |
Добавлено: Чт 15 Ноя, 2007 11:13 |
|
|
Коммент от меня
Чтобы на радиоканале была заставка, как у меня на канале /trance, нужно добавить в конфиг айскаста:
Код: |
<mount>
<mount-name>/trance</mount-name>
<username>source</username>
<password>*****</password>
<intro>/путь/к/файлу/intro.mp3</intro>
</mount>
|
Для ретрансляции какой-либо радиостанции на своем сервере:
Код: |
<relay>
<server>80.93.49.154</server>
<port>8081</port>
<mount>/</mount>
<local-mount>/belive</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
<on-demand>1</on-demand>
</relay>
|
|
|
Siava Злобный адмЫн
Зарегистрирован: 07.12.2003 Статьи (FAQ): 16 Комментарии: 21
|
Добавлено: Вс 16 Дек, 2007 02:48 |
|
|
XaNDeR_KeYG, так всё и так расписано. При наличии опыта работы с серверами Linux/FreeBSD проблем быть не должно.
При запуске IceCast открывается порт 8000, через который и попадаешь в веб-интерфейс. В каталог с сайтом ничего копировать не надо. |
|
MiCh друх форума
Зарегистрирован: 25.12.2003 Статьи (FAQ): 0 Комментарии: 2
|
Добавлено: Вт 04 Мар, 2008 23:11 |
|
|
поставил ices0... и все бы хорошо... кроме одного...
он почему-то очень долго коннектиться к айскасту (он на другой машине) и постоянно запаздывает с обновлением метаданных (артист, название трека)... |
|
Siava Злобный адмЫн
Зарегистрирован: 07.12.2003 Статьи (FAQ): 16 Комментарии: 21
|
Добавлено: Вс 09 Мар, 2008 14:28 |
|
|
Между двумя машинками не пробовал.. надо бы проверить. |
|
Siava Злобный адмЫн
Зарегистрирован: 07.12.2003 Статьи (FAQ): 16 Комментарии: 21
|
Добавлено: Вт 02 Сен, 2008 23:51 |
|
|
Хм.. не сталкивался с таким вроде |
|
Strider медиамагнат
Зарегистрирован: 20.02.2007 Статьи (FAQ): 1 Комментарии: 4 Город: Сертолово |
Добавлено: Чт 02 Окт, 2008 22:08 |
|
|
shunya
Код: | <on-demand>1</on-demand> |
этот параметр отвечает за загрузку метаданных всегда или "по-требованию", т.е. если ты хочешь чтобы название трека, исполнитель и в принципе сам моунг-поит отображались всегда, поставь
Код: | <on-demand>0</on-demand> |
|
|
|
Страница 1 из 1 |
Часовой пояс: GMT + 4
Вы не можете отправлять статьи в этот раздел Вы не можете изменять Ваши статьи в этом разделе Вы не можете удалить Ваши статьи в этом разделе Вы не можете оценивать статьи в этом разделе Вы не можете одобрять статьи в этом разделе
Вы не можете отправлять комментарии в этот раздел Вы не можете редактировать Ваши комментарии в этом разделе Вы не можете удалять Ваши комментарии в этом разделе Вы не можете оценивать комментарии в этом разделе
|
|