- Автор темы
- #1
Что же такое IceCast? Это сервер потокового вещания.
Icecast является серверной программой, которая может осуществлять раздачу цифровых потоков различных форматов, таких как Ogg Vorbis, MPEG Audio Layer III (MP3), Theora, Advanced Audio Coding(AAC), AACplus и Nullsoft Streaming Video.
Собственно передача данных осуществляется по стандартному протоколу HTTP, либо по протоколу SHOUTcast.
Icecast является аналогом программы SHOUTcast компании Nullsoft, однако имеет более развитую функциональность и поддерживает большее количество форматов потоков.
Нам потребуются приложения:
icecast-2.3.2 - серверное приложение
ices-0.4 - утилита для посылки mp3-аудиопотока на IceCast сервер либо
ices-2.0.1 - для посылки ogg-аудиопотока на IceCast сервер
Прежде чем устанавливать сам сервер IceCast, нам нужны будут некоторые библиотеки, а именно:
libshout-2.2.2
libmp3lame-3.97
Обе библиотеки есть в репозиториях, так что проблем возникнуть не должно, ставим:
После установкии библиотек будет ставить Ices 0.4. К сожалению его нет в репозиториях, поэтому придется собирать самим.
После установки Ices 0.4 переходит к непосредственной установки IceCast, он к счастью есть в репозиториях.
Установка IceCast.
Настройка IceCast.
После установки, можно приступить к настройке.
Сначала надо создать пользователя и группу IceCast.
Теперь займемся непосредственно настройкой самого сервера, конфиг которого хранится в /etc/icecast2/icecast.xml
Если у вас есть джингл и вы хотите, что бы он играл при подключении к радио, нужно в файле /etc/icecast2/icecast.xml добавить несколько строк.
Что бы избежать сюрпризов выполните две команды:
Эти команды ограничат доступ к файлу конфигов нашего сервера.
Теперь можно запустить наш сервер:
Если все сделано верно, то набрал в браузере адрес localhost:8000(если не меняли порт), Вы сможете увидеть web оболочку сервера IceCast.
Теперь перейдет к настройке Icec 0.4
Сделаем конфиг IceCast(по идеи шаблон конфига должен быть в /usr/local/etc/ices.conf.dist и его можно скопировать в /usr/local/etc/ices.conf)
После окончания мучений конфига Ices 0.4, опять же во избежании сюрпризов выполним команду, что бы ограничить доступ к конфигу:
Теперь осталось все это запустить, но для начало нужно сделать плэйлист для нашего Ices 0.4. Предположим что у вас есть коллекция mp3 файликов, скажем в /mnt/mp3/rock/. Что бы все файлы в данной директории попали в плэй лист, выполняем две команды:
Теперь запускаем Ices 0.4:
Если не запускается командой выше, или запускается и начинает использовать стандартный конфиг, то запустите Ices командой:
ices
Если вы не меняли кардинально конфиг Icec(не меняли название точки монтирования) но зайдя по ссылке Для просмотра ссылки Войдиили Зарегистрируйся вы сможете услышать ваше радио.
Ну и конечно же, неплохо сделать так, чтобы ices запускался не под root'ом, как в примерах выше. Для этого можно завести отдельного пользователя, либо использовать пользователя icecast. Строка запуска ices немного изменится:
Всё представленное выше работает.
Спасибо за внимание, надеюсь, статья кому-нибудь будет полезна.
Icecast является серверной программой, которая может осуществлять раздачу цифровых потоков различных форматов, таких как Ogg Vorbis, MPEG Audio Layer III (MP3), Theora, Advanced Audio Coding(AAC), AACplus и Nullsoft Streaming Video.
Собственно передача данных осуществляется по стандартному протоколу HTTP, либо по протоколу SHOUTcast.
Icecast является аналогом программы SHOUTcast компании Nullsoft, однако имеет более развитую функциональность и поддерживает большее количество форматов потоков.
Нам потребуются приложения:
icecast-2.3.2 - серверное приложение
ices-0.4 - утилита для посылки mp3-аудиопотока на IceCast сервер либо
ices-2.0.1 - для посылки ogg-аудиопотока на IceCast сервер
Прежде чем устанавливать сам сервер IceCast, нам нужны будут некоторые библиотеки, а именно:
libshout-2.2.2
libmp3lame-3.97
Обе библиотеки есть в репозиториях, так что проблем возникнуть не должно, ставим:
Код:
sudo apt-get install libshout3
sudo apt-get libmp3lame-dev
Код:
sudo apt-get http://downloads.us.xiph.org/releases/ices/ices-0.4.tar.gz
tar -zxvf ices-0.4.tar.gz
cd ices-0.4
./configure –with-lame (если не получается с параметром with-lame, то можно просто ./configure )
make && make install
Установка IceCast.
Код:
sudo apt-get install icecast2
После установки, можно приступить к настройке.
Сначала надо создать пользователя и группу IceCast.
Код:
sudo groupadd icecast
sudo useradd -g icecast -d /home/icecast -s /sbin/nologin icecast
Код:
sudo nano /etc/icecast2/icecast.xml
<icecast>
<limits>…
//Количество пользователей
<clients>10000</clients>
<sources>5</sources>
<threadpool>5</threadpool>
<queue-size>524288</queue-size>
<client-timeout>30</client-timeout>
<header-timeout>15</header-timeout>
<source-timeout>10</source-timeout>
<!– If enabled, this will provide a burst of data when a client
first connects, thereby significantly reducing the startup
time for listeners that do substantial buffering. However,
it also significantly increases latency between the source
client and listening client. For low-latency setups, you
might want to disable this. –>
<burst-on-connect>1</burst-on-connect>
<!– same as burst-on-connect, but this allows for being more
specific on how much to burst. Most people won’t need to
change from the default 64k. Applies to all mountpoints –>
<burst-size>131070</burst-size>
</limits>
//Тут Ваши пароли
<authentication>
<!– Sources log in with username ’source’ –>
<source-password>паророль_для_вещания</source-password>
<!– Relays log in username ‘relay’ –>
<relay-password>password</relay-password>
//Пароли админа
<!– Admin logs in with the username given below –>
<admin-user>admin</admin-user>
<admin-password>password</admin-password>
</authentication>
<!– Uncomment this if you want directory listings –>
<!–
<directory>
<yp-url-timeout>15</yp-url-timeout>
<yp-url>http://dir.xiph.org/cgi-bin/yp-cgi</yp-url>
</directory>
–>
//Настройки сервера
<!– This is the hostname other people will use to connect to your server.
It affects mainly the urls generated by Icecast for playlists and yp
listings. –>
<hostname>sr.pipradio.ru</hostname>
<!– You can use these two if you only want a single listener –>
<!–<port>9500</port> –>
<!–<bind-address>127.0.0.1</bind-address>–>
<!– You may have multiple <listener> elements –>
<listen-socket>
<port>9500</port>
<!– <bind-address>127.0.0.1</bind-address> –>
</listen-socket>
<!–
<listen-socket>
<port>9501</port>
</listen-socket>
–>
<!–<master-server>127.0.0.1</master-server>–>
<!–<master-server-port>9501</master-server-port>–>
<!–<master-update-interval>120</master-update-interval>–>
<!–<master-password>hackme</master-password>–>
<!– setting this makes all relays on-demand unless overridden, this is
useful for master relays which do not have <relay> definitions here.
The default is 0 –>
<!–<relays-on-demand>1</relays-on-demand>–>
//Настройки relay (вещание другой радисостанции через Ваш сервер)
<relay>
<server></server>
<port>7284</port>
<mount>/</mount>
<local-mount>/nonstop</local-mount>
<on-demand>0</on-demand>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<relay>
<server>aol.streams.bassdrive.com</server>
<port>8010</port>
<mount>/</mount>
<local-mount>/playlist2</local-mount>
<on-demand>0</on-demand>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<relay>
<server>sr.pipradio.ru</server>
<port>9500</port>
<mount>/</mount>
<local-mount>/nonstop</local-mount>
<on-demand>0</on-demand>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<!– Only define a <mount> section if you want to use advanced options,
like alternative usernames or passwords
<mount>
<mount-name>/example-complex.ogg</mount-name>
<username>othersource</username>
<password>hackmemore</password>
<max-listeners>1</max-listeners>
<dump-file>/tmp/dump-example1.ogg</dump-file>
<burst-size>65536</burst-size>
<fallback-mount>/example2.ogg</fallback-mount>
<fallback-override>1</fallback-override>
<fallback-when-full>1</fallback-when-full>
<intro>/example_intro.ogg</intro>
<hidden>1</hidden>
<no-yp>1</no-yp>
<authentication type=”htpasswd”>
<option name=”filename” value=”myauth”/>
<option name=”allow_duplicate_users” value=”0?/>
</authentication>
<on-connect>/home/icecast/bin/stream-start</on-connect>
<on-disconnect>/home/icecast/bin/stream-stop</on-disconnect>
</mount>
<mount>
<mount-name>/auth_example.ogg</mount-name>
<authentication type=”url”>
<option name=”mount_add” value=”http://myauthserver.net/notify_mount.php”/>
<option name=”mount_remove” value=”http://myauthserver.net/notify_mount.php”/>
<option name=”listener_add” value=”http://myauthserver.net/notify_listener.php”/>
<option name=”listener_remove” value=”http://myauthserver.net/notify_listener.php”/>
</authentication>
</mount>
–>
<fileserve>1</fileserve>
<!– set the mountpoint for a shoutcast source to use, the default if not
specified is /stream but you can change it here if an alternative is
wanted or an extension is required
<shoutcast-mount>/live.nsv</shoutcast-mount>
–>
<paths>
<!– basedir is only used if chroot is enabled –>
<basedir>/usr/share/icecast2</basedir>
<!– Note that if <chroot> is turned on below, these paths must both
be relative to the new root, not the original root –>
<logdir>/var/log/icecast2</logdir>
<webroot>/usr/share/icecast2/web</webroot>
<adminroot>/usr/share/icecast2/admin</adminroot>
<pidfile>/usr/share/icecast2/icecast.pid</pidfile>
<!– Aliases: treat requests for ’source’ path as being for ‘dest’ path
May be made specific to a port or bound address using the “port”
and “bind-address” attributes.
–>
<!–
<alias source=”/foo” dest=”/bar”/>
–>
<!– Aliases: can also be used for simple redirections as well,
this example will redirect all requests for [url]http://server:port/[/url] to
the status page
–>
<alias source=”/” dest=”/status.xsl”/>
</paths>
<logging>
<accesslog>access.log</accesslog>
<errorlog>error.log</errorlog>
<!– <playlistlog>playlist.log</playlistlog> –>
<loglevel>4</loglevel> <!– 4 Debug, 3 Info, 2 Warn, 1 Error –>
<logsize>10000</logsize> <!– Max size of a logfile –>
<!– If logarchive is enabled (1), then when logsize is reached
the logfile will be moved to [error|access|playlist].log.DATESTAMP,
otherwise it will be moved to [error|access|playlist].log.old.
Default is non-archive mode (i.e. overwrite)
–>
<!– <logarchive>1</logarchive> –>
</logging>
<!– <security> –>
<!– <chroot>0</chroot>
<changeowner>
<user>icecast2</user>
<group>icecast2</group>
</changeowner>
</security> –>
</icecast>
Код:
sudo nano /etc/icecast2/icecast.xml
/nonstop (название точки монтирования)
source
***** /путь/к/файлу/intro.mp3
Код:
chown root:root /etc/icecast2/icecast.xml
chmod 640 /etc/icecast2/icecast.xml
Теперь можно запустить наш сервер:
Код:
icecast -b -c /etc/icecast2/icecast.xml
Теперь перейдет к настройке Icec 0.4
Сделаем конфиг IceCast(по идеи шаблон конфига должен быть в /usr/local/etc/ices.conf.dist и его можно скопировать в /usr/local/etc/ices.conf)
Код:
sudo nano /usr/local/etc/ices.conf
<?xml version=”1.0??>
<ices:Configuration xmlns:ices=”http://www.icecast.org/projects/ices”>
<Playlist>
<Randomize>1</Randomize>
<File>/расположение/вашего/плейлиста/playlist.txt</File>
<Type>builtin</Type>
<Module>ices</Module>
</Playlist>
<Execution>
<Background>1</Background>
<Verbose>0</Verbose>
<BaseDirectory>/tmp</BaseDirectory>
</Execution>
<Stream>
<Server>
<Hostname>адрес сервера</Hostname>
<Port>порт сервера</Port>
<– См. примечание о паролях в icecast.xml –>
<Password>Ваш пароль на вещание в IceCast</Password>
<Protocol>http</Protocol>
</Server>
///Точка монтирования(название канала), настройки битрейта
<Mountpoint>/nonstop</Mountpoint>
<Dumpfile>ices.dump</Dumpfile>
<Name>Default stream</Name>
<Genre>Default genre</Genre>
<Description>Default description</Description>
<URL>http://localhost/</URL>
<Public>0</Public>
<Bitrate>128</Bitrate>
<Reencode>0</Reencode>
<Samplerate>44100</Samplerate>
<Channels>2</Channels>
</Stream>
</ices:Configuration>
Код:
chmod 640 /usr/local/etc/ices.conf
Код:
cd /mnt/mp3/rock/
ls > playlist.txt
Код:
ices -c ‘/usr/local/etc/ices.conf’
ices
Если вы не меняли кардинально конфиг Icec(не меняли название точки монтирования) но зайдя по ссылке Для просмотра ссылки Войди
Ну и конечно же, неплохо сделать так, чтобы ices запускался не под root'ом, как в примерах выше. Для этого можно завести отдельного пользователя, либо использовать пользователя icecast. Строка запуска ices немного изменится:
Код:
su icecast -c "ices ..."
Спасибо за внимание, надеюсь, статья кому-нибудь будет полезна.