расскажу как это можно сделать на линуксе...
сразу скажу с 500-го дрима можно запустить 20 радио...
к примеру сделаем 3 радио
1) нам нужны аудио пиды радио каналов
2) установленный
vlc проигрыватель
3) установленный
shoutcast (по желанию)
4) установленный
icecast (чтобы не перекодировать, а ретранслировать поток)
создаём файл с правами 755
chmod 755 /tmp/radio
в этот файл вносим данные радио(как я уже сказал 3 радио)
# Energy 9000
screen -A -mdS vlc_energy vlc -vvv http://192.168.0.231:31338/102f --sout='#duplicate{dst=std{access=http,mux=raw,dst=192.168.0.232:11002}}'
screen -A -mdS sc_energy sc_serv /usr/local/etc/energy/shoutcast.conf
# RMR 9002
screen -A -mdS vlc_rmr vlc -vvv http://192.168.0.231:31338/1032 --sout='#duplicate{dst=std{access=http,mux=raw,dst=192.168.0.232:11004}}'
screen -A -mdS sc_rmr sc_serv /usr/local/etc/rmr/shoutcast.conf
# Shanson 9004
screen -A -mdS vlc_shanson vlc -vvv http://192.168.0.231:31338/1092 --sout='#duplicate{dst=std{access=http,mux=raw,dst=192.168.0.232:11006}}'
screen -A -mdS sc_shanson sc_serv /usr/local/etc/shanson/shoutcast.conf
вот пример shoutcast.conf для радио Energy
MaxUser=32
Password=password
PortBase=9002
RelayPort=11002
RelayServer=192.168.0.232
RealTime=0
ScreenLog=0
LogFile=/tmp/shoutcast/sc_energy.log
ShowLastSongs=1
TchLog=No
W3CEnable=No
SrcIP=127.0.0.1
DestIP=ANY
Yport=80
NameLookups=0
AdminPassword=admin_password
AutoDumpUsers=0
AutoDumpSourceTime=10
TitleFormat=Maximum
PublicServer=default
AllowRelay=No
AllowPublicRelay=No
MetaInterval=32768
CpuCount=1
вот пример icecast.xml
<icecast>
<limits>
<clients>200</clients>
<sources>50</sources>
<threadpool>5</threadpool>
<queue-size>524288</queue-size>
<client-timeout>300</client-timeout>
<header-timeout>150</header-timeout>
<source-timeout>100</source-timeout>
<burst-on-connect>1</burst-on-connect>
<burst-size>655350</burst-size>
</limits>
<authentication>
<source-password>password1</source-password>
<relay-password>password</relay-password>
<admin-user>admin</admin-user>
<admin-password>password</admin-password>
</authentication>
<relay>
<server>192.168.0.232</server>
<port>11002</port>
<mount>/</mount>
<local-mount>/Energy</local-mount>
<on-demand>0</on-demand>
<relay-shoutcast-metadata>0</relay-shoutcast-metadata>
</relay>
<relay>
<server>192.168.0.232</server>
<port>11004</port>
<mount>/</mount>
<local-mount>/RMR</local-mount>
<on-demand>0</on-demand>
<relay-shoutcast-metadata>0</relay-shoutcast-metadata>
</relay>
<relay>
<server>192.168.0.232</server>
<port>11006</port>
<mount>/</mount>
<local-mount>/Shanson</local-mount>
<on-demand>0</on-demand>
<relay-shoutcast-metadata>0</relay-shoutcast-metadata>
</relay>
<fileserve>1</fileserve>
<paths>
<basedir>/usr/share/icecast</basedir>
<logdir>/var/log/icecast</logdir>
<webroot>/usr/share/icecast/web/</webroot>
<adminroot>/usr/share/icecast/web/admin</adminroot>
<pidfile>/var/log/icecast/icecast.pid</pidfile>
<webroot>/usr/share/icecast/web/</webroot>
<adminroot>/usr/share/icecast/admin</adminroot>
<alias source="/foo" dest="/status.xsl"/>
</paths>
<logging>
<accesslog>access.log</accesslog>
<errorlog>error.log</errorlog>
<playlistlog>playlist.log</playlistlog>
<loglevel>4</loglevel> <!-- 4 Debug, 3 Info, 2 Warn, 1 Error -->
</logging>
<security>
<chroot>0</chroot>
<changeowner>
<user>icecast</user>
<group>icecast</group>
</changeowner>
</security>
</icecast>
Запуск icecast
screen -A -mdS icecast icecast -c /usr/local/etc/icecast/icecast.xml
Что мы имеем
файл /tmp/radio, с правами 755 с содержимым
killall -9 vlc
killall -9 icecast
killall -9 sc_serv
screen -wipe
# Energy 9000
screen -A -mdS vlc_energy vlc -vvv http://192.168.0.231:31338/102f --sout='#duplicate{dst=std{access=http,mux=raw,dst=192.168.0.232:11002}}'
screen -A -mdS sc_energy sc_serv /usr/local/etc/energy/shoutcast.conf
# RMR 9002
screen -A -mdS vlc_rmr vlc -vvv http://192.168.0.231:31338/1032 --sout='#duplicate{dst=std{access=http,mux=raw,dst=192.168.0.232:11004}}'
screen -A -mdS sc_rmr sc_serv /usr/local/etc/rmr/shoutcast.conf
# Shanson 9004
screen -A -mdS vlc_shanson vlc -vvv http://192.168.0.231:31338/1092 --sout='#duplicate{dst=std{access=http,mux=raw,dst=192.168.0.232:11006}}'
screen -A -mdS sc_shanson sc_serv /usr/local/etc/shanson/shoutcast.conf
screen -A -mdS icecast icecast -c /usr/local/etc/icecast/icecast.xml
для полного счастья делаем
ln -s /tmp/radio /usr/bin/radio - это даст нам возможность просто запускать исполняемый файл
radio
192.168.0.231 - это адрес дрима
192.168.0.232 - это адрес нашего линукс сервера(с которго клиенты будут слушать радио)
Если всё сделано правильно можно проверить работу icecast
http://192.168.0.232:9000/status.xsl
подключение клиента к радио
http://192.168.0.232:9000/Energy - icecast (смотрим icecast.xml,таким же образом добавляется любое радио)
http://192.168.0.232:9002 - shoutcast
P.S.
По умолчанию порт 31339, если брать строчку с дрима, но как показала практика на порту 31338 лучше работает...
P.P.S.
Если есть замечания или предложения, жду ответов...
P.P.P.S.
screen -A -mds icecast - это запуск скрина(работа приложения в фоне), просмотр скринов можно осуществить командой
screen -ls
после чего можно зайти в скрин и посмотреть его вот таким образом
screen -r vlc_energy
выйти из скрина на отключая его можно сделать вот так
ctrl+a d