Тематические термины: Icecast, Windows, Linux, Ubuntu, CentOS.
В двух словах, программное обеспечение Icecast позволяет создать сервер радио и видео вещания. В данной статье мы разберем процесс установки и настройки данного ПО на системах Linux. Установку и принцип настройки также рассмотрим для Windows.
Рассмотрим установку под системы Windows, Ubuntu/Debian, CentOS/Red Hat.
Переходим на страницу загрузки Icecast и скачиваем программу для Windows:
Запускаем скачанный файл – принимаем лицензионное соглашение – кликаем несколько раз Next и Install. Когда завершится установка, кликаем по Close.
Установка завершена.
Устанавливаем расширенный репозиторий epel:
yum install epel-release
Устанавливаем icecast:
yum install icecast
Установка выполняется из базового репозитория:
apt-get install icecast2
Все настройки вносятся в конфигурационный файл формата XML.
В Windows он расположен по пути %ProgramFiles(x86)%\Icecast\icecast.xml. Открыть его можно любым текстовым редактором.
В CentOS 7 конфигурационный файл открываем командой:
vi /etc/icecast.xml
В Ubuntu:
vi /etc/icecast2/icecast.xml
Сами настройки в данном файле одинаковые для любой операционной системы. Все что включено в <!– … –> является комментарием и не учитывается программой.
После внесения настроек, службу icecast необходимо перезапускать.
Перед запуском сервера, необходимо убедиться в правильных настройках фаервола (необходимо открыть порт 8000).
Firewalld (CentOS 7):
firewall-cmd –permanent –add-port=8000/tcp
firewall-cmd –reload
* подробнее о процессе настройки firewalld.
Iptables (Ubuntu):
iptables -I INPUT 1 -p tcp –dport 8000 -j ACCEPT
* подробнее о процессе настройки iptables.
Приводим следующую настройку к такому виду:
<bind-address>192.168.0.15</bind-address>
* при такой настройке мы указываем, на каком сетевом интерфейсе будем слушать запросы (в данном случае, на 192.168.0.15).
Если в системе линукс используется система безопасности Selinux, либо отключаем ее, либо настраиваем.
В CentOS 7 разрешаем сервис и запускаем его следующими командами:
systemctl enable icecast
systemctl start icecast
systemctl enable icecast2
systemctl start icecast2
Открываем браузер и переходим по пути http://192.168.0.15:8000/
* где 192.168.0.15 — IP-адрес нашего сервера, который мы прописали в bind-address конфига.
Мы должны увидеть следующее:
Самый простой способ проверить работу сервера радио — настроить перенаправление другой радиостанции.
Находим подходящий ресурс, например, hd.lagrosseradio.info. Изучаем документацию по настройке ретрансляции.
И дописываем в наш конфигурационный файл, примерно, следующее:
<relay> <server>ice4.lagrosseradio.info</server> <port>80</port> <mount>/lagrosseradio-metal-024.mp3</mount> <local-mount>/metal</local-mount> <on-demand>0</on-demand></relay>
<relay> <server>shoutcast.aichyna.com</server> <port>9000</port> <mount>/aplus_128</mount> <local-mount>/aplus</local-mount> <on-demand>0</on-demand></relay>
* перенаправлений может быть несколько. В данном примере на ресурсы ice4.lagrosseradio.info и shoutcast.aichyna.com.* server — имя сервера, с которого берется поток; port — сетевой порт, на котором удаленный сервер отдает поток; mount — точка мониторования на стороне удаленного сервера, с которого берем поток; local-mount — точка монтирования, которая будет использоваться нашим сервером для обращения к настраиваемому потоку; on-demand — если стоит 0, сервер всегда берет поток и проигрывает его, если 1 — только при наличие активных обращений.
Перезапускаем сервис:
systemctl restart icecast || systemctl restart icecast2
Опять открываем нашу страницу http://192.168.0.15:8000/ — на странице должен появиться список с потоками:
Теперь пробуем в браузере открыть страницы с настроенными точками монтирования (local-mount) — http://192.168.0.15:8000/metal и /http://192.168.0.15:8000/aplus. Мы должны увидеть проигрыватель с кнопкой Play.
Создать свой список музыкальных композиций и передать его серверу Icecast можно с помощью Ices. Для начала, выполним его установку.
CentOS 7.
Установка выполняется путем сборки пакета из исходника. Для начала скачиваем его — для этого переходим на страницу icecast.org/ices и копируем ссылку на Ices0 (ices2 не умеет работать с mp3, что требует их конвертацию и это не очень удобно):
Используя ссылку, скачиваем исходник:
wget http://downloads.us.xiph.org/releases/ices/ices-0.4.tar.gz
* если получим ошибку «wget: команда не найдена», ставим wget командой yum install wget.
Распаковываем архив и заходим в каталог:
tar -zxvf ices*
Устанавливаем пакеты, нужные для сборки:
yum install gcc libxml2-devel libshout-devel gcc-c++
Запускаем конфигурирование, сборку и установку:
./configure
make install
Ubuntu
Установка в убунте выполняется одной командой:
apt-get install ices
Открываем конфигурационный файл и проверяем лимит на количество создаваемых ресурсов:
<icecast> <limits> … <sources>3</sources> …
* если лимит на sources будет превышен предыдущими плейлистами или редиректами, мы получим ошибку при запуске ices, например: Error during send: Mount failed on http://192.168.0.15:8000/music, error: Login failed.
Меняем пароль на управление ресурсами:
<authentication> … <source-password>newpassword</source-password>
* newpassword — собственно, сам пароль.
Закрываем редактор и перезапускаем icecast:
Создаем каталог конфигурационного файла и сам файл:
mkdir /etc/ices
vi /etc/ices/ices.xml
<?xml version=”1.0″?><ices:Configuration xmlns:ices=”http://www.icecast.org/projects/ices”><Playlist> <File>/etc/ices/playlist.rock.txt</File> <Randomize>1</Randomize> <Type>builtin</Type> <Module>ices</Module></Playlist><Execution> <Background>1</Background> <Verbose>0</Verbose> <BaseDirectory>/etc/ices</BaseDirectory></Execution>
<Stream> <Server> <Hostname>192.168.0.15</Hostname> <Port>8000</Port> <Password>newpassword</Password> <Protocol>http</Protocol> </Server>
<Mountpoint>/rock</Mountpoint> <Dumpfile>ices.dump</Dumpfile> <Name>Default stream</Name> <Genre>Default genre</Genre> <Description>Default description</Description> <URL>http://192.168.0.15:8000</URL> <Public>0</Public> <Bitrate>128</Bitrate> <Reencode>0</Reencode> <Channels>2</Channels></Stream></ices:Configuration>
* где, как правило, редактируется следующее:
Создадим список аудиофайлов:
ls /music/rock/ > /etc/ices/playlist.rock.txt
* данной командой мы прочитаем содержимое каталога /music/rock и сделаем из его содержимого плейлист для ices.* по сути, файл playlist.rock.txt должен включать перечень всех аудиофайлов с полным путем до них. Каждый файл с новой строчки.
Запускаем ices:
ices -c /etc/ices/ices.xml
* где /etc/ices/ices.xml — путь до конфигурационного файла.
В теории, можно добавить команду /usr/local/bin/ices -c /etc/ices/ices.xml в /etc/rc.local. Но профессиональнее создать сервис на базе systemd.
Создаем файл сервиса:
vi /etc/systemd/system/ices.service
[Unit]Description=Ices ServiceAfter=network.targetRequires=icecast.service
[Service]Type=forkingPIDFile=/etc/ices/ices.pidExecStart=-/usr/local/bin/ices -c /etc/ices/ices.xmlExecReload=/bin/kill -HUP $MAINPIDRestart=always
[Install]WantedBy=multi-user.target
Перезапускаем systemd:
systemctl daemon-reload
Разрешаем созданный сервис:
systemctl enable ices
Запускаем его и проверяем:
systemctl start ices
systemctl status ices
Идея заключается в создании общего канала (mount) с переключением на резервный (в случаях, когда общий ничего не вещает). Это применяется для создания канала диджея — когда он подключен, в эфир идет его трансляция, когда отключен — музыка из плейлиста или перенаправленная с другой радиостанции. Также, это можно применять для оповещений или вставки рекламных роликов.
В данном примере разберем создание канала, который будет получать аудиоконтент из ices, а при отключении данной трансляции, будет играть музыка из другого источника.
В конфиг icecast добавляем:
<mount> <mount-name>/live</mount-name> <fallback-mount>/aplus</fallback-mount> <fallback-override>1</fallback-override></mount>
* на самом деле, данный relay мы уже добавляли выше; live — имя основного канала; aplus в секции fallback-mount — имя канала, на который нужно перенаправить слушателя, если основной канал не задействован; секция fallback-override определяет, нужно ли автоматически возвращать слушателей на основной канал, если он опять станет активным.
Перезапускаем icecast:
Можно уже подключаться в эфиру (в нашем примере по адресу http://192.168.160.163:8000/live) — мы должны услышать музыку, которая транслируется на shoutcast.aichyna.com.
Создаем конфигурационный файл для ices (или правим уже созданный):
vi /etc/ices/live.xml
<?xml version=”1.0″?><ices:Configuration xmlns:ices=”http://www.icecast.org/projects/ices”><Playlist> <File>/etc/ices/playlist.rock.txt</File> <Randomize>1</Randomize> <Type>builtin</Type> <Module>ices</Module></Playlist><Execution> <Background>1</Background> <Verbose>5</Verbose> <BaseDirectory>/etc/ices/live</BaseDirectory></Execution>
<Stream> <Server> <Hostname>192.168.160.163</Hostname> <Port>8000</Port> <Password>newpassword</Password> <Protocol>http</Protocol> </Server>
<Mountpoint>/live</Mountpoint> <Dumpfile>ices.dump</Dumpfile> <Name>Live stream</Name> <Genre>Genre</Genre> <Description>Live DJ</Description> <URL>http://192.168.160.163:8000</URL> <Public>0</Public> <Bitrate>128</Bitrate> <Reencode>0</Reencode> <Channels>2</Channels></Stream></ices:Configuration>
* обратите внимание, похожий конфиг мы создавали, когда знакомились с ices.
Создаем рабочий каталог для ices:
mkdir /etc/ices/live
ices -c /etc/ices/live.xml
В Linux, лог хранится в каталоге /var/log/icecast. В Windows — %ProgramFiles(x86)%\Icecast\log.
Для изменения пути хранения правил изменяем тег logdir в секции paths:
<paths> … <logdir>/var/log/icecast</logdir> …</paths>
В данных каталогах располагается два файла — access и error (соответственно, лог обращений к серверу и лог ошибок).
Для редактирования уровня логирования и имен файлов правим секцию logging:
<logging> <accesslog>access.log</accesslog> <errorlog>error.log</errorlog> <loglevel>3</loglevel> <logsize>10000</logsize></logging>
* где accesslog и errorlog — имена файлов лога; loglevel — уровень логирования (4 Debug, 3 Info, 2 Warn, 1 Error); logsize — максимальный размер лога.
Продолжая использовать данный сайт вы принимаете политику конфиденциальности и cookies