Support » Поддержка Digispot II
Установка¶
Настойку интернет-вещания будем производить на примере связки IceCast – LiquidSoap. Оба бесплатных продукта могут быть размещены как на одном сервере, так и на разных. Мы рассмотрим вариант, когда и IceCast и LiquidSoap устанавливаются на один компьютер.
Первым делом необходимо скачать утилиты с официальных сайтов. Актуальная версия IceCast доступна для скачивания на странице http://icecast.org/download/. Свежая версия LiquidSoap доступна здесь: http://sourceforge.net/projects/savonet/. Отметим, что оба программных продукта представлены как для Windows, так и для операционной системы Linux, что позволяет использовать для наших целей и ее. В данном случае рассмотрим настройку на примере операционной системы семейства Windows.
Ранние версии IceCast позволяли устанавливать приложение как сервис. Сейчас программа просто разворачивается в каталог установки, а запуск ее предполагается посредством открытия исполняемого файла с параметром, передающим путь к конфигурационному XML-файлу. Например, так, если каталог запуска — инсталляционная директория:
.\bin\icecast.exe -c .\icecast.xml
LiquidSoap поставляется только в виде архива, поэтому его необходимо самостоятельно распаковать в целевую директорию. Для удобства рекомендуется использовать каталог C:\Program Files\. Запуск осуществляется точно так же, за исключением того, что в качестве конфигурационного файла используется файл с расширением .liq, имеющий свой синтаксис:
liquidsoap.exe test.liq
На текущий момент запуск IceCast как сервиса невозможен. Если требуется такая возможность, стоит воспользоваться более старой версией, например v2.3.2 (доступна по этой ссылке: http://downloads.xiph.org/releases/icecast/icecast2_win32_2.3.2_setup.exe). На сайте разработчиков есть информация, что в случае большой заинтересованности со стороны пользователей, данную возможность вернут.
В LiquidSoap возможность установки сервиса предусмотрена. Для этого используется параметр —install-service:
liquidsoap.exe —install-service —service-name LiquidSoap —service-title «LiquidSoap Service» «C:\Program Files\LiquidSoap\config.liq»
С точки зрения функциональности, запуск обоих продуктов в виде сервисов предпочтителен, поэтому мы воспользуемся старой версией IceCast. В настройке никаких отличий нет.
Настройка IceCast¶
Конфигурационный файл IceCast — это xml-файл, определяющий настройки самого сервера, а так же потоков вещания, создаваемых на нем. Рассмотрим основные. Для удобства именования секций настроек будем использовать нотацию XPath.
- /icecast/limits/sources — определяет максимальное допустимое количество потоков вещания. Будем считать, что мы хотим создать 5 различных битрейтов одной частоты вещания. В этом случае изменим это значение на 5.
- /icecast/authentication — здесь задаются пароли администратора и пользователей, имеющих права на создание вещательного и зеркального потоков. Настоятельно рекомендуется изменить их.
- /icecast/hostname — ip-адрес сервера. Как правило, это localhost, но можно явно указать ip на конкретном сетевом адаптере.
- /icecast/listen-socket/port — порт, на котором располагается сервис. Разумеется, этот порт должен быть открыт наружу (добавлен в исключения брандмауэра), а так же прокинут на маршрутизаторе при использовании NAT.
- /icecast/mount — секция, отвечающая за настройки определенной точки монтирования (отдельного потока). Здесь понадобится указать кодировку, если используются метаданные.
- /icecast/mount/mount-name — имя точки монтирования, например: /mount_point.
- /icecast/mount/charset — кодировка. Необходимо использовать значение UTF-8.
В нашем случае мы получили следующий конфигурационный файл:
Если все работает корректно, то после запуска сервиса и формирования потока вещания с точкой монтирования /station1-256kbps-mp3, его можно будет прослушать, открыв ссылку http://127.0.0.1:8000/station1-256kbps-mp3.m3u.
Предполагается, что основной поток кодируется в mp3 c достаточным битрейтом, например 256 kbps.
После этого можно приступить к конфигурированию LiquidSoap, который будет заниматься перекодированием базового потока в другие форматы и битрейты.
Настройка LiquidSoap¶
Мы будем ориентироваться на то, что установленный сервис ссылается на конфигурационный файл C:\Program Files\LiquidSoap\config.liq. Поэтому откроем его на редактирование и внесем следующие правки. Синтаксис файла .liq требует изучения, поскольку возможности программы довольно богаты, но для нашей задачи достаточно будет сделать только две вещи. Сначала мы определим переменную, ссылающуюся на исходный поток:
input = mksafe(input.http(«http://127.0.0.1:8000/station1-256kbps-mp3»))
После чего определим новую точку монтирования с нужным форматом и качеством:
Более подробно про различные поддерживаемые форматы можно прочитать здесь: http://savonet.sourceforge.net/doc-svn/encoding_formats.html.
В результате мы получили такой файл:
Запустим сервис LiquidSoap и убедимся, что все работает. Если что-то пошло не так, можно включить логгирование в стандартный поток вывода и попробовать запустить данную конфигурацию в командной строке.
Формирование плей-листа¶
В итоге мы получили несколько потоков с различным битрейтом. Их можно встроить в плеер на сайте радиостанции. Но иногда требуется объединить их в рамках одного плей-листа, открываемого в пользовательском плеере. Для этого всего лишь нужно создать текстовый файл с расширением .m3u следующего содержания:
Источник
Использование Icecast или настройка сервера для радиовещания
В двух словах, программное обеспечение Icecast позволяет создать сервер радио и видео вещания. В данной статье мы разберем процесс установки и настройки данного ПО на системах Linux. Установку и принцип настройки также рассмотрим для Windows.
Установка
Рассмотрим установку под системы Windows, Ubuntu/Debian, CentOS/Red Hat.
Windows
Переходим на страницу загрузки Icecast и скачиваем программу для Windows:
Запускаем скачанный файл — принимаем лицензионное соглашение — кликаем несколько раз Next и Install. Когда завершится установка, кликаем по Close.
Linux CentOS 7
Устанавливаем расширенный репозиторий epel:
yum install epel-release
yum install icecast
Linux Ubuntu
Установка выполняется из базового репозитория:
apt-get install icecast2
Принцип настройки
Все настройки вносятся в конфигурационный файл формата XML.
В Windows он расположен по пути %ProgramFiles(x86)%\Icecast\icecast.xml. Открыть его можно любым текстовым редактором.
В CentOS 7 конфигурационный файл открываем командой:
Сами настройки в данном файле одинаковые для любой операционной системы. Все что включено в является комментарием и не учитывается программой.
После внесения настроек, службу icecast необходимо перезапускать.
Тестовый запуск
Настройка брандмауэра
Перед запуском сервера, необходимо убедиться в правильных настройках фаервола (необходимо открыть порт 8000).
Firewalld (CentOS 7):
firewall-cmd —permanent —add-port=8000/tcp
Iptables (Ubuntu):
iptables -I INPUT 1 -p tcp —dport 8000 -j ACCEPT
Первичная настройка
Приводим следующую настройку к такому виду:
* при такой настройке мы указываем, на каком сетевом интерфейсе будем слушать запросы (в данном случае, на 192.168.0.15).
Selinux
Если в системе линукс используется система безопасности 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. Изучаем документацию по настройке ретрансляции.
И дописываем в наш конфигурационный файл, примерно, следующее:
/lagrosseradio-metal-024.mp3
/metal
0
* перенаправлений может быть несколько. В данном примере на ресурсы 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.
Свои плейлисты (Ices)
Создать свой список музыкальных композиций и передать его серверу Icecast можно с помощью Ices. Для начала, выполним его установку.
Установка клиента
CentOS 7.
Установка выполняется путем сборки пакета из исходника. Для начала скачиваем его — для этого переходим на страницу icecast.org/ices и копируем ссылку на Ices0 (ices2 не умеет работать с mp3, что требует их конвертацию и это не очень удобно):
Используя ссылку, скачиваем исходник:
* если получим ошибку «wget: команда не найдена», ставим wget командой yum install wget.
Распаковываем архив и заходим в каталог:
Устанавливаем пакеты, нужные для сборки:
yum install gcc libxml2-devel libshout-devel gcc-c++
Запускаем конфигурирование, сборку и установку:
Ubuntu
Установка в убунте выполняется одной командой:
apt-get install ices
Настройка Icecast
Открываем конфигурационный файл и проверяем лимит на количество создаваемых ресурсов:
* если лимит на sources будет превышен предыдущими плейлистами или редиректами, мы получим ошибку при запуске ices, например: Error during send: Mount failed on http://192.168.0.15:8000/music, error: Login failed.
Меняем пароль на управление ресурсами:
* newpassword — собственно, сам пароль.
Закрываем редактор и перезапускаем icecast:
systemctl restart icecast || systemctl restart icecast2
Настройка Ices и запуск плейлиста
Создаем каталог конфигурационного файла и сам файл:
/etc/ices/playlist.rock.txt
1
builtin
ices
/rock
ices.dump
Default stream
Default genre
Default description
http://192.168.0.15:8000
* где, как правило, редактируется следующее:
- File — путь до файла со списком аудиофайлов.
- Randomize — воспроизведение в случайном порядке.
- Verbose — отладка. Следует поменять на 1, если программа работает не корректно.
- BaseDirectory — рабочий каталог программы. В нем будут храниться pid и log файлы.
- Hostname — адрес нашего сервера icecast.
- Port — порт, на котором слушает сервер icecast.
- Password — пароль для ресурса, который был выставлен в конфигурационном файле icecast.
- Mountpoint — точка монтирования на сервере для плейлиста.
- URL — путь URL до плейлиста.
Создадим список аудиофайлов:
ls /music/rock/ > /etc/ices/playlist.rock.txt
* данной командой мы прочитаем содержимое каталога /music/rock и сделаем из его содержимого плейлист для ices.
* по сути, файл playlist.rock.txt должен включать перечень всех аудиофайлов с полным путем до них. Каждый файл с новой строчки.
ices -c /etc/ices/ices.xml
* где /etc/ices/ices.xml — путь до конфигурационного файла.
Автозапуск ices
В теории, можно добавить команду /usr/local/bin/ices -c /etc/ices/ices.xml в /etc/rc.local. Но профессиональнее создать сервис на базе systemd.
Создаем файл сервиса:
[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
Разрешаем созданный сервис:
systemctl enable ices
Запускаем его и проверяем:
systemctl start ices
systemctl status ices
Автоматическое переключение каналов
Идея заключается в создании общего канала (mount) с переключением на резервный (в случаях, когда общий ничего не вещает). Это применяется для создания канала диджея — когда он подключен, в эфир идет его трансляция, когда отключен — музыка из плейлиста или перенаправленная с другой радиостанции. Также, это можно применять для оповещений или вставки рекламных роликов.
В данном примере разберем создание канала, который будет получать аудиоконтент из ices, а при отключении данной трансляции, будет играть музыка из другого источника.
В конфиг icecast добавляем:
* на самом деле, данный relay мы уже добавляли выше; live — имя основного канала; aplus в секции fallback-mount — имя канала, на который нужно перенаправить слушателя, если основной канал не задействован; секция fallback-override определяет, нужно ли автоматически возвращать слушателей на основной канал, если он опять станет активным.
systemctl restart icecast || systemctl restart icecast2
Можно уже подключаться в эфиру (в нашем примере по адресу http://192.168.160.163:8000/live) — мы должны услышать музыку, которая транслируется на shoutcast.aichyna.com.
Создаем конфигурационный файл для ices (или правим уже созданный):
Источник