Интернет Радио

Появилась необходимость поставить онлайн-радио. Поиски в гугле привели к ПО под названием Icecast и ShoutCas. Icecast — свободное серверное ПО для организации потокового цифрового аудиовещания. Поддерживает большее количество форматов потоков. При передаче данных Icecast поддерживает теги в UTF-8, что позволяет организовывать трансляцию с русской аннотацией. Одна из главных ососбеностей – не занимает интернет полосу при отсутствии клиентов.

Shoutcast — кроссплатформенное бесплатное серверное ПО компании Nullsoft. Предназначено для организации потокового вещания цифрового аудио/видео сигнала в формате MP3, AAC, AACplus, NSV, как в локальную сеть, так и в Интернет. Прост в установке, настройке и управлении. Есть несколько понравившихся мне плееров для вещания в Icecast: Ices0 и Ices2. Разница между ними в том, что ices0 вещает в формате MP3, а ices2 в формате Ogg.

Стоит отметить, что есть и много других плееров например : icegenerator, liquidsoap, ezstream и тому подобные. Лично я ставил все, кроме liquidsoap. С ним много возни, не охота было его добивать =), но его стоит установить, вещь крутая, просто в него надо будет скрипты писать свои для вещание плейлистов в разное время.

На счет Shoutcast, особо ничего сказать не могу. У него свой вещательный плеер sc_trans (знаю только этот плеер, может есть куча плееров). И так поехали устанавливать :)

cd /usr/ports/audio/icecast2
make install clean

После установки дописываем в /etc/rc.conf несколько строк:

icecast_enable=YES
icecast_flags="-b -c /usr/local/etc/icecast.xml"

Редактируем конфиг под себя

<authentication>
    <!-- Sources log in with username 'source' -->
    <source-password>ПАРОЛЬ</source-password>
    <!-- Relays log in username 'relay' -->
    <relay-password>ПАРОЛЬ</relay-password>

    <!-- Admin logs in with the username given below -->
    <admin-user>admin</admin-user>
    <admin-password>ПАРОЛЬ</admin-password>
</authentication>

<!-- You may have multiple <listener> elements -->
<listen-socket>
    <port>8000</port>
    <bind-address>192.168.1.15</bind-address>
</listen-socket>

Если хотим ретранслировать, то графа

<relay>
     <server>81.88.113.18</server>
     <port>8000</port>
     <mount>/</mount>
     <local-mount>/radio_pop.mp3</local-mount>
     <on-demand>1</on-demand>

     <relay-shoutcast-metadata>0</relay-shoutcast-metadata>
</relay>

Где 81.88.113.18 – IP-адрес сервера с которого берем радио, 8000 – порт по которому он транслирует это радио. / – точка монтирования. /radio_pop.mp3 - локальная точка монтирования. Строка 6 – говорит о том, что icecast2 будет работать в качестве демона.

Не забываем снимать комментарии с секции.

Проверяем:

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

Заходим в браузер, набираем IP:8000, если Icecast появился значит заработало. Могут возникнуть проблемы, например:

Changed groupid to 65533.
Changed userid to 65534.
FATAL: could not open error logging (/usr/local/var/log/icecast/error.log): No such file or directory
FATAL: could not open access logging (/usr/local/var/log/icecast/access.log): No such file or directory
FATAL: Could not start logging

или

Detaching from the console
ERROR: You should not run icecast2 as root
Use the changeowner directive in the config file

Решаются они так:

В первом случае заходим в конфиг icecast.xml и ищем графу <paths> в графе находим путь логов и ставим в /var/log/icecast
потом в этом же пути создаем файлы

chown -R nobody:nogroup access.log
chown -R nobody:nogroup error.log

И не забываем давать соответствующие права (chmod 777).

Оставил пользователя и группу nobody:nogroup без изменений:

<security>
  <chroot>0</chroot>
   <changeowner>
       <user>nobody</user>
       <group>nogroup</group>
  </changeowner>
</security>

Вы можете поменять юзера и группу, тогда возможно вам придется их создать.

Во втором случае, нужно будет расскоментировать графу:

<changeowner>
  <user>nobody</user>
  <group>nogroup</group>
</changeowner>

то есть убрать (<!-- -->)

Поехали дальше. Установим плеер:

cd /usr/ports/audio/ices0
make install clean

В директори /usr/local/etc/ появится конфиг ices.

Конфиг такой:

<?xml version="1.0"?>
<ices:Configuration xmlns:ices="http://www.icecast.org/projects/ices">
 <Playlist>
   <!-- Показываем где лежит плейлист. -->
   <File>playlist.txt</File>
   <!-- Если хотим что бы играло случайно ставим 1 -->
   <Randomize>0</Randomize>
   <!-- тип плей листа -->
   <Type>builtin</Type>
   <!-- Module name to pass to the playlist handler if using  perl or python.
        If you use the builtin playlist handler then this is ignored -->
   <Module>ices0</Module>
   <!-- если нужно что бы между песнями было затухание то разремируем и выставляем в секундах. по умочанию выключено т.е. 0.
   <Crossfade>5</Crossfade>
   -->
 </Playlist>

 <Execution>
   <!-- запускать демоном ставим 1 -->
   <Background>1</Background>
   <!-- хотите видеть все логи в файле ставим 1 -->
   <Verbose>1</Verbose>
   <!-- Каталог где будет находится лог и pid файлы -->
   <BaseDirectory>/tmp</BaseDirectory>
 </Execution>


 <Stream>
   <Server>
     <!-- ip  icecast сервера куда хотим прицепится -->
     <Hostname>localhost</Hostname>
     <!-- Port of the same -->
     <Port>8000</Port>
     <!-- пароль на конект что бы транслировать icecast server -->
     <Password>xxx</Password>
     <!-- сли сервер  Shoutcast ставим "icy", icecast 1.x ставим "xaudiocast", а если icecast 2.x то "http". -->
     <Protocol>http</Protocol>
   </Server>

   <!-- точка монтирования потока на айскаст сервера -->
   <Mountpoint>/play</Mountpoint>
   <!-- The name of the dumpfile on the server for your stream. DO NOT set
        this unless you know what you're doing.
   <Dumpfile>ices.dump</Dumpfile>
   -->
   <!-- Имя вашей трансляции, а не имя трека -->
   <Name>mp3</Name>
   <!-- Жанр, или стиль вашей трансляции -->
   <Genre>pop</Genre>
   <!-- большое описание вашей трансляции -->
   <Description>Local stream</Description>
   <!-- ссылка вашей трансляции -->
   <URL>http://faro.az/</URL>
   <!-- 0 если не хотите сделать ваш сервер публичным и 1 если хотите -->
   <Public>0</Public>

<!-- качество трансляции -->
   <Bitrate>128</Bitrate>
   <!-- если поставить 1 то ices попробует на лету пережимать трансляцию при помози  liblame в нужное качество потока -->
   <Reencode>0</Reencode>
   <!-- Number of channels to reencode to, 1 for mono or 2 for stereo -->
   <!-- Sampe rate to reencode to in Hz. Leave out for LAME's best choice
   <Samplerate>44100</Samplerate>
   -->
   <Channels>2</Channels>
 </Stream>
</ices:Configuration>

Не забываем добавить его в автозапуск:

vi /etc/rc.conf

ices0_enable="YES"
ices0_flags="/usr/local/etc/ices.conf"

Создаем папку, где будет храниться наша музыка, например: mkdir /usr/local/etc/music. Добавляем в нее сузыку в формате mp3. Далее надо создать плейлист, чтобы наш плеер смог понять, где лежит наша музыка.
Делается это так: find /usr/local/etc/music -name ".mp3" > /usr/local/etc/music/playlist.txt
Не забываем в конфиге ices в строке >file> указать полный путь до плейлиста . У нас это будет выглядеть так:

<file> /usr/local/etc/music/playlist.txt</file>

Ну вот вроде все. Теперь запускаем сервер:

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

Потом плеер :

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

Наслаждаемся нашей музыкой http://ip:8000/play
можно так http://ip:8000/play.m3u, тогда у вас скачается плейлист и вы сможете его слушать на вашем плеере, например, покойный наш Winamp :( или AIMP. 

Если у вас возникнут какие-то проблемы обращайтесь на наш форум.

Добавить комментарий

CAPTCHA
RFC 5321
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.
Яндекс.Метрика