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