Тематические термины: Icecast , Windows , Linux , Ubuntu , CentOS .
В двух словах, программное обеспечение Icecast позволяет создать сервер радио и видео вещания. В данной статье мы разберем процесс установки и настройки данного ПО на системах Linux. Установку и принцип настройки также рассмотрим для Windows.
Установка
Windows
CentOS
Ubuntu
Принцип настройки
Тестовый запуск
Настройка брандмауэра
Первичная настройка
Selinux
Запуск
Тест
Настройка редиректа радиостанции
Свои плейлисты (Ices)
Установка клиента
Настройка Icecast
Настройка Ices и запуск плейлиста
Автозапуск ices
Автоматическое переключение каналов
Логирование
Рассмотрим установку под системы 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)%Icecasticecast.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
В Ubuntu:
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*
cd ices*
Устанавливаем пакеты, нужные для сборки:
yum install make gcc libxml2-devel libshout-devel gcc-c++
Запускаем конфигурирование, сборку и установку:
./configure
make
make install
Ubuntu
Установка в убунте выполняется одной командой:
apt-get install ices
Открываем конфигурационный файл.
а) В CentOS 7 конфигурационный файл открываем командой:
vi /etc/icecast.xml
б) В Ubuntu:
vi /etc/icecast2/icecast.xml
Проверяем лимит на количество создаваемых ресурсов:
<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:
systemctl restart icecast || systemctl restart icecast2
Создаем каталог конфигурационного файла и сам файл:
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 -d /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 Service
After=network.target
Requires=icecast.service
[Service]
Type=forking
PIDFile=/etc/ices/ices.pid
ExecStart=-/usr/local/bin/ices -c /etc/ices/ices.xml
ExecReload=/bin/kill -HUP $MAINPID
Restart=always
[Install]
WantedBy=multi-user.target
Перезапускаем systemd:
systemctl daemon-reload
Разрешаем созданный сервис:
systemctl enable ices
Запускаем его и проверяем:
systemctl start ices
systemctl status ices
Идея заключается в создании общего канала (mount) с переключением на резервный (в случаях, когда общий ничего не вещает). Это применяется для создания канала диджея — когда он подключен, в эфир идет его трансляция, когда отключен — музыка из плейлиста или перенаправленная с другой радиостанции. Также, это можно применять для оповещений или вставки рекламных роликов.
В данном примере разберем создание канала, который будет получать аудиоконтент из ices, а при отключении данной трансляции, будет играть музыка из другого источника.
В конфиг icecast добавляем:
<relay>
<server>shoutcast.aichyna.com</server>
<port>9000</port>
<mount>/aplus_128</mount>
<local-mount>/aplus</local-mount>
<on-demand>0</on-demand>
</relay>
<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:
systemctl restart icecast || systemctl restart icecast2
Можно уже подключаться в эфиру (в нашем примере по адресу 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:
ices -c /etc/ices/live.xml
В Linux, лог хранится в каталоге /var/log/icecast . В Windows — %ProgramFiles(x86)%Icecastlog .
Для изменения пути хранения правил изменяем тег 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 — максимальный размер лога.
Zulip — программное обеспечение для реализации корпоративного чата. Разработан в 2012 году, в 2014 был…
Zookeeper — cервис-координатор, который позволяет обеспечить контроль синхронизации данных. Разработан на Java компанией Apache Software…
Zimbra — программное обеспечение для реализации почтового сервиса или, если сказать точнее, автоматизации совместной деятельности…
Zabbix — бесплатная система мониторинга. Позволяет отслеживать состояние сетевых узлов, компьютеров и серверов. Возможности: Поддержка…
YouTube — компания-владелец одноименного портала для просмотра и хранения видео. Чтобы пользоваться данным порталом достаточно…
Yota — провайдер, предоставляющий доступ к сети Интернет по беспроводной связи. Впервые, сервис начал работать…