Появилась необходимость поставить онлайн-радио. Поиски в гугле привели к ПО под названием 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 (знаю только этот плеер, может есть куча плееров)
И так поехали устанавливать :)- cd /usr/ports/audio/icecast2
- make install clean
- 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>
- icecast -b -c /usr/local/etc/icecast_pop.xml
- 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
- # chown -R nobody:nogroup access.log
- # chown -R nobody:nogroup error.log
- <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
- <?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"
- <file> /usr/local/etc/music/playlist.txt</file>
- icecast -b -c /usr/local/etc/icecast.xml
- ices -c /usr/local/etc/ices.conf