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

Появилась необходимость поставить онлайн-радио. Поиски в гугле привели к ПО под названием Icecast и ShoutCast

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

Shoutcast — кроссплатформенное бесплатное серверное ПО компании Nullsoft. Предназначено для организации потокового вещания цифрового аудио/видео сигнала в формате MP3, AAC, AACplus, NSV, как в локальную сеть, так и в Интернет. Прост в установке, настройке и управлении.

Есть несколько понравившихся мне плееров для вещания в Icecast: Ices0 и Ices2. Разница между ними в том, что ices0 вещает в формате MP3, а ices2 в формате Ogg.

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

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

И так поехали устанавливать :)

  1. cd /usr/ports/audio/icecast2
  2. make install clean

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

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

Редактируем конфиг под себя
  1. <authentication>
  2.      <!-- Sources log in with username 'source' -->
  3.      <source-password>ПАРОЛЬ</source-password>
  4.      <!-- Relays log in username 'relay' -->
  5.      <relay-password>ПАРОЛЬ</relay-password>
  6.  
  7.      <!-- Admin logs in with the username given below -->
  8.      <admin-user>admin</admin-user>
  9.      <admin-password>ПАРОЛЬ</admin-password>
  10. </authentication>
  11.  
  12. <!-- You may have multiple <listener> elements -->
  13. <listen-socket>
  14.      <port>8000</port>
  15.      <bind-address>192.168.1.15</bind-address>
  16. </listen-socket>

Если хотим ретранслировать, то графа
  1. <relay>
  2.       <server>81.88.113.18</server>
  3.       <port>8000</port>
  4.       <mount>/</mount>
  5.       <local-mount>/radio_pop.mp3</local-mount>
  6.       <on-demand>1</on-demand>
  7.  
  8.       <relay-shoutcast-metadata>0</relay-shoutcast-metadata>
  9. </relay>

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

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

Проверяем:

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

Заходим в браузер, набираем ip:8000, если Icecast появился значит заработало.

Могут возникнуть проблемы, например:

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

или
  1. Detaching from the console
  2. ERROR: You should not run icecast2 as root
  3. Use the changeowner directive in the config file

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

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

  1. # chown -R nobody:nogroup access.log
  2. # chown -R nobody:nogroup error.log

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

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

  1. <security>
  2.    <chroot>0</chroot>
  3.     <changeowner>
  4.         <user>nobody</user>
  5.         <group>nogroup</group>
  6.    </changeowner>
  7. </security>

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

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

  1. <changeowner>
  2.    <user>nobody</user>
  3.    <group>nogroup</group>
  4. </changeowner>

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

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

  1. # cd /usr/ports/audio/ices0
  2. # make install clean

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

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

  1. <?xml version="1.0"?>
  2. <ices:Configuration xmlns:ices="http://www.icecast.org/projects/ices">
  3.   <Playlist>
  4.     <!-- Показываем где лежит плейлист. -->
  5.     <File>playlist.txt</File>
  6.     <!-- Если хотим что бы играло случайно ставим 1 -->
  7.     <Randomize>0</Randomize>
  8.     <!-- тип плей листа -->
  9.     <Type>builtin</Type>
  10.     <!-- Module name to pass to the playlist handler if using  perl or python.
  11.          If you use the builtin playlist handler then this is ignored -->
  12.     <Module>ices0</Module>
  13.     <!-- если нужно что бы между песнями было затухание то разремируем и выставляем в секундах. по умочанию выключено т.е. 0.
  14.     <Crossfade>5</Crossfade>
  15.     -->
  16.   </Playlist>
  17.  
  18.   <Execution>
  19.     <!-- запускать демоном ставим 1 -->
  20.     <Background>1</Background>
  21.     <!-- хотите видеть все логи в файле ставим 1 -->
  22.     <Verbose>1</Verbose>
  23.     <!-- Каталог где будет находится лог и pid файлы -->
  24.     <BaseDirectory>/tmp</BaseDirectory>
  25.   </Execution>
  26.  
  27.  
  28.   <Stream>
  29.     <Server>
  30.       <!-- ip  icecast сервера куда хотим прицепится -->
  31.       <Hostname>localhost</Hostname>
  32.       <!-- Port of the same -->
  33.       <Port>8000</Port>
  34.       <!-- пароль на конект что бы транслировать icecast server -->
  35.       <Password>xxx</Password>
  36.       <!-- сли сервер  Shoutcast ставим "icy", icecast 1.x ставим "xaudiocast", а если icecast 2.x то "http". -->
  37.       <Protocol>http</Protocol>
  38.     </Server>
  39.  
  40.     <!-- точка монтирования потока на айскаст сервера -->
  41.     <Mountpoint>/play</Mountpoint>
  42.     <!-- The name of the dumpfile on the server for your stream. DO NOT set
  43.          this unless you know what you're doing.
  44.     <Dumpfile>ices.dump</Dumpfile>
  45.     -->
  46.     <!-- Имя вашей трансляции, а не имя трека -->
  47.     <Name>mp3</Name>
  48.     <!-- Жанр, или стиль вашей трансляции -->
  49.     <Genre>pop</Genre>
  50.     <!-- большое описание вашей трансляции -->
  51.     <Description>Local stream</Description>
  52.     <!-- ссылка вашей трансляции -->
  53.     <URL>http://faro.az/</URL>
  54.     <!-- 0 если не хотите сделать ваш сервер публичным и 1 если хотите -->
  55.     <Public>0</Public>
  56.  
  57. <!-- качество трансляции -->
  58.     <Bitrate>128</Bitrate>
  59.     <!-- если поставить 1 то ices попробует на лету пережимать трансляцию при помози  liblame в нужное качество потока -->
  60.     <Reencode>0</Reencode>
  61.     <!-- Number of channels to reencode to, 1 for mono or 2 for stereo -->
  62.     <!-- Sampe rate to reencode to in Hz. Leave out for LAME's best choice
  63.     <Samplerate>44100</Samplerate>
  64.     -->
  65.     <Channels>2</Channels>
  66.   </Stream>
  67. </ices:Configuration>

Не забываем добавить его в автозапуск:
  1. # vi /etc/rc.conf
  2. ices0_enable="YES"
  3. 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> указать полный путь до плейлиста . У нас это будет выглядеть так:
  1. <file> /usr/local/etc/music/playlist.txt</file>

Ну вот вроде все. Теперь запускаем сервер:
  1. icecast -b -c /usr/local/etc/icecast.xml

Потом плеер :
  1. ices -c /usr/local/etc/ices.conf

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

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

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

Filtered text

CAPTCHA
Этот вопрос предназначен для предотвращения автоматической отправки форм спам-ботами.
Fill in the blank.