Настройка потокового mp3-сервера

автор: sanya

Как настроить аудиовещание в сети на основе icecast (сервер потокового вещания, поддерживающий mp3) и ices (утилита для отправки аудиопотока).

Устанавливаем icecast и ices из портов:

# cd /usr/ports/net/icecast
# make install clean CLEANDEPENDS=Yes
# cd /usr/ports/net/ices
# make install clean CLEANDEPENDS=Yes

Либо с помощью прекомпилированных пакетов:

# export PKG_PATH=ftp://ftp.openbsd.org/pub/OpenBSD/3.9/packages/i386/
# pkg_add icecast-2.3.1.tgz
# pkg_add ices-0.4p0.tgz

Добавим группу и пользователя, необходимых для работы icecast:

# groupadd _icecast
# useradd -d /nonexistent -s /sbin/nologin -g _icecast _icecast

Сконфигурируем icecast:

# vi /etc/icecast.xml
<icecast>
<limits>
<sources>2</sources>
</limits>
<authentication>
<source-password>noidea</source-password>
<relay-password>noidea</relay-password>
<admin-user>admin</admin-user>
<admin-password>noidea</admin-password>
</authentication>
<hostname>localhost</hostname>
<listen-socket>
<port>8000</port>
</listen-socket>
<paths>
<logdir>/var/icecast/logs</logdir >
<webroot>/var/icecast/web</webroot>
<adminroot>/var/icecast/admin</adminroot>
<alias source="/" dest="/status.xsl"/>
</paths>
<security>
<changeowner>
<user>icecast</user>
<group>icecast</group>
</changeowner>
</security>
<logging>
<accesslog>access.log</accesslog>
<errorlog>error.log</errorlog>
<loglevel>3</loglevel>
</logging>
</icecast>

Создадим рабочий каталог icecast:

# mkdir -p /var/icecast/logs/
# chown icecast:icecast /var/icecast/logs/
# cp -R /usr/local/share/examples/icecast/admin/ /var/icecast/
# cp -R /usr/local/share/examples/icecast/web/ /var/icecast/

Запустим icecast:

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

Проверим работоспособность:

# lynx http://localhost:8000

Настройка ices:

# vi /etc/ices.xml
<?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>
<Password>secret</Password>
<Protocol>http</Protocol>
</Server>

<Mountpoint>/music</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>
<Channels>2</Channels>
</Stream>
</ices:Configuration>

Запустим ices:

# ices -c /etc/ices.xml -D -F /path/to/playlist.txt

Внесем соответствующие изменения в /etc/rc.local:

# vi /etc/rc.local
if [ -x /usr/local/bin/icecast ]; then
echo -n ' icecast';      /usr/local/bin/icecast -b -c /etc/icecast.xml
fi

if [ -x /usr/local/bin/ices ]; then
echo -n ' ices';      /usr/local/bin/ices -c /etc/ices.xml -D \
-F /path/to/playlist.txt
fi