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

Опубликовано Фаро - ср, 27/11/2013 - 17:50

Появилась необходимость поставить онлайн-радио. Поиски в гугле привели к ПО под названием 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 Если у вас возникнут какие-то проблемы обращайтесь на наш форум.

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

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