icecast
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. Теперь все станции в одном плейлисте и не нужно прыгать по вкладкам.