Icecast — свободное ПО для организации потокового цифрового аудио и видеовещания. Icecast является серверной программой, которая может осуществлять раздачу цифровых потоков различных форматов, таких как Ogg Vorbis, Opus, MP3, Theora, AAC, AAC Plus и NSV. Передача данных осуществляется по стандартному протоколу HTTP, либо по протоколу SHOUTcast. Icecast поддерживает теги в UTF-8, что позволяет организовывать трансляцию с русской аннотацией.
Установка с репозитория epel:
# yum install epel-release # yum install icecast
Настройка
vi /etc/icecast.xml <icecast> <!-- location and admin are two arbitrary strings that are e.g. visible on the server info page of the icecast web interface (server_version.xsl). --> <location>RING</location> <admin>icemaster@domen.com</admin> <limits> <clients>1000</clients> <sources>200</sources> <threadpool>500</threadpool> <queue-size>524288</queue-size> <client-timeout>30</client-timeout> <header-timeout>15</header-timeout> <source-timeout>10</source-timeout> <burst-on-connect>1</burst-on-connect> <burst-size>65535</burst-size> </limits> <authentication> <source-password>hackme</source-password> <relay-password>hackme</relay-password> <admin-user>admin</admin-user> <admin-password>hackme</admin-password> </authentication> <hostname>host.dome.com</hostname> <listen-socket> <port>8000</port> <bind-address>192.168.113.1</bind-address> </listen-socket> <!-- Nashe Radio --> <relay> <server>185.128.234.102</server> <port>8000</port> <mount>/nashe</mount> <local-mount>/nashe</local-mount> <on-demand>1</on-demand> <relay-shoutcast-metadata>1</relay-shoutcast-metadata> </relay> <!-- hitfm.ua 96.4 --> <relay> <server>195.95.206.17</server> <port>8000</port> <mount>/HitFM</mount> <local-mount>/HitFM</local-mount> <on-demand>1</on-demand> <relay-shoutcast-metadata>1</relay-shoutcast-metadata> </relay> <!-- jamfm.ua 95.6 --> <relay> <server>185.128.234.102</server> <port>8000</port> <mount>/jamfm</mount> <local-mount>/jamfm</local-mount> <on-demand>1</on-demand> <relay-shoutcast-metadata>1</relay-shoutcast-metadata> </relay> <!-- Shanson 101.9 Kiev --> <relay> <server>media2.brg.ua</server> <port>8000</port> <mount>/shanson_h</mount> <local-mount>/shanson</local-mount> <on-demand>1</on-demand> <relay-shoutcast-metadata>1</relay-shoutcast-metadata> </relay> <!-- KissFM --> <relay> <server>195.95.206.14</server> <port>8000</port> <mount>/KissFM</mount> <local-mount>/kissfm</local-mount> <on-demand>1</on-demand> <relay-shoutcast-metadata>1</relay-shoutcast-metadata> </relay> <!-- EuropaPlus --> <relay> <server>185.128.234.102</server> <port>8000</port> <mount>/europaplus</mount> <local-mount>/europaplus</local-mount> <on-demand>1</on-demand> <relay-shoutcast-metadata>1</relay-shoutcast-metadata> </relay> <!-- Radiopyatnica --> <relay> <server>185.128.234.101</server> <port>80</port> <mount>/radiopyatnica</mount> <local-mount>/radiopyatnica</local-mount> <on-demand>1</on-demand> <relay-shoutcast-metadata>1</relay-shoutcast-metadata> </relay> <!-- AvtoRadio --> <relay> <server>cast.radiogroup.com.ua</server> <port>8000</port> <mount>/avtoradio</mount> <local-mount>/avtoradio</local-mount> <on-demand>1</on-demand> <relay-shoutcast-metadata>1</relay-shoutcast-metadata> </relay> <!-- Radio ROKS --> <relay> <server>online-radioroks.tavrmedia.ua</server> <port>8000</port> <mount>/RadioROKS</mount> <local-mount>/radioROKS</local-mount> <on-demand>1</on-demand> <relay-shoutcast-metadata>1</relay-shoutcast-metadata> </relay> <!-- Radio Melodia --> <relay> <server>online-radiomelodia.tavrmedia.ua</server> <port>80</port> <mount>/RadioMelodia</mount> <local-mount>/radioMelodia</local-mount> <on-demand>1</on-demand> <relay-shoutcast-metadata>1</relay-shoutcast-metadata> </relay> <!-- NRJ RU --> <relay> <server>ic3.101.ru</server> <port>8000</port> <mount>/s20</mount> <local-mount>/NRJ</local-mount> <on-demand>1</on-demand> <relay-shoutcast-metadata>1</relay-shoutcast-metadata> </relay> <!-- RETRO RU --> <relay> <server>retroserver.streamr.ru</server> <port>8043</port> <mount>/retro256.mp3</mount> <local-mount>/retro</local-mount> <on-demand>1</on-demand> <relay-shoutcast-metadata>1</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/admin</adminroot> <alias source="/" dest="/status.xsl"/> </paths> <logging> <accesslog>access.log</accesslog> <errorlog>error.log</errorlog> <loglevel>4</loglevel> <!-- 4 Debug, 3 Info, 2 Warn, 1 Error --> <logsize>100000</logsize> </logging> <security> <chroot>0</chroot> <changeowner> <user>icecast</user> <group>icecast</group> </changeowner> </security> </icecast>
Добавляем правила в iptables
.... # ICECAST iptables -I INPUT 1 -p tcp --dport 8000:8003 -j ACCEPT iptables -I INPUT 1 -p tcp --dport 9500 -j ACCEPT #---------- # Logs #---------- #iptables -A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 4 ....
Стартуем сервис:
# systemctl start icecast # systemctl status icecast # systemctl enable icecast
Проверяем набирая в браузере:
http://192.168.113.1:8000/
Слушаем например HitFM так:
http://192.168.113.1:8000/HitFM
Для удобства создаем на ПК с которого будем слушать радио файлик с расширением *.m3u с таким содержимым:
#EXTM3U #EXTVLCOPT:network-caching=1000 http://192.168.113.1:8000/HitFM #EXTVLCOPT:network-caching=1000 http://192.168.113.1:8000/jamfm #EXTVLCOPT:network-caching=1000 http://192.168.113.1:8000/nashe #EXTVLCOPT:network-caching=1000 http://192.168.113.1:8000/shanson #EXTVLCOPT:network-caching=1000 http://192.168.113.1:8000/kissfm #EXTVLCOPT:network-caching=1000 http://192.168.113.1:8000/europaplus #EXTVLCOPT:network-caching=1000 http://192.168.113.1:8000/nrj #EXTVLCOPT:network-caching=1000 http://192.168.113.1:8000/avtoradio #EXTVLCOPT:network-caching=1000 http://192.168.113.1:8000/radioROKS #EXTVLCOPT:network-caching=1000 http://192.168.113.1:8000/radioMelodia #EXTVLCOPT:network-caching=1000 http://192.168.113.1:8000/teuphoria #EXTVLCOPT:network-caching=1000 http://192.168.113.1:8000/NRJ #EXTVLCOPT:network-caching=1000 http://192.168.113.1:8000/retro
И открываем его, например, VLC player. Теперь все станции в одном плейлисте и не нужно прыгать по вкладкам.