Как создать сервер потокового радио с помощью Icecast в Linux
Вы когда-нибудь хотели создать свое собственное интернет-радио? Вы можете это сделать с помощью Icecast. В этой статье мы создадим простое потоковое онлайн-радио.
Icecast - это сервер потокового вещания с открытым исходным кодом на основе стандартов HTTP, созданный фондом Xiph.org. Данный сервер можно использовать для всего: от небольших домашних радиостанций до крупных корпоративных интернет-радиостанций.
Для начала работы вам понадобится, как минимум, только компьютер и подключенный микрофон. Icecast доступен для Linux/Unix и Windows. Существуют аналогичные проекты, такие как Shoutcast, Snapcast и AzuraCast, но мы будем использовать Icecast, так как это наиболее подходящий и простой проект для постройки потокового онлайн-радио.
Лицензионные требования для работы интернет-радиостанции зависят от страны. Если вы планируете транслировать материалы, защищенные авторским правом, вы должны получить соответствующие лицензии от органов по защите авторских прав и/или получить явное разрешение от всех правообладателей. Пожалуйста, ознакомьтесь с законодательством, чтобы узнать конкретные требования.
Установка Icecast
Вы можете загрузить Icecast с помощью менеджера пакетов вашего дистрибутива, и именно этот способ будет использоваться в этой статье.
Для дистрибутивов на базе Debian устанавливаем пакет icecast2 с помощью apt:
$ sudo apt install icecast2
Начальная конфигурация
Итак, вы установили Icecast. Что теперь? В дистрибутивах Debian после установки запускается скрипт, который поможет вам всё настроить. В первом диалоговом окне нажмите клавишу со стрелкой влево, чтобы выбрать «Да», а затем нажмите Enter:
Поскольку мы настраиваем личный потоковый радиоканал, в следующем запросе мы введем IP-адрес локальной машины:
Клиент-источник - это программа, с помощью которой вы передаете медиафайлы (или живое аудио) на сервер. Пароль источника аутентифицирует Icecast, чтобы позволить вам начать стриминг. Рекомендуется использовать уникальный пароль, а не тот, который используется по умолчанию (это «hackme»). В примере будем использовать простые пароли:
Релеи полезны в больших системах для распределения нагрузки слушателей на несколько серверов. Здесь мы не будем настраивать ретрансляторы, поэтому вы можете ввести любое значение (но рекомендуется изменить значение по умолчанию):
И наконец, вводим пароль пользователя admin. Вы будете использовать его для доступа к разделу администратора веб-интерфейса Icecast. Измените значение по умолчанию на уникальное:
Проверим, что все готово к работе:
$ sudo systemctl status icecast2.service
Отлично! Теперь, когда Icecast запущен, давайте приступим к работе с нашим исходным клиентом.
Выбор клиента-источника
Существует 3 основных компонента потокового вещания Icecast: клиент-источник, сервер Icecast и клиент-слушатель. Все они независимы друг от друга и могут работать (и часто так и происходит) на разных машинах. Клиент-источник - это то, что воспроизводит ваши музыкальные файлы или передает аудио в Icecast. Затем Icecast распространяет этот поток среди слушателей по протоколу HTTP.
Выбор правильного клиента-источника для вашей задачи зависит от многих факторов. Некоторые вопросы, которые вы можете рассмотреть при принятии решения, включают:
- Буду ли я передавать предварительно записанные звуковые/музыкальные файлы?
- Буду ли я транслировать живой звук с микрофонов и микшерных пультов?
- Буду ли я вести трансляцию с настольного компьютера/ноутбука или мобильного устройства (или с обоих)?
- Есть ли у меня ограничения или требования к операционной системе?
Неполный список клиентов-источников можно найти на странице Icecast Apps.
В этой статье мы будем использовать многофункциональный, но простой в использовании клиент-источник, созданный Даниэлем Нётеном, под названием Broadcast Using This Tool (сокращенно BUTT). Мы будем использовать BUTT для прямой трансляции с нашего микрофона на Icecast. BUTT доступен для Linux, macOS и Windows. Вы можете получить его с официальной страницы.
Настройка довольно проста. В главном окне выберите кнопку «Setting», затем на вкладке «Main», в разделе «Server Settings», нажмите кнопку «Add».
Появится новое окно для настройки вашего сервера.
Выберите имя для конфигурации этого сервера (поддерживается несколько конфигураций сервера) и выберите радиокнопку «Icecast». Введите IP-адрес и порт (по умолчанию 8000) вашего сервера Icecast, а также пароль источника. В поле «Icecast Mountpoint» добавьте в конце .OPUS (добавление расширения помогает некоторым клиентам-слушателям определить, какой кодек используется). Оставьте «Icecast User» в качестве источника и снимите флажок «Use legacy Icecast protocol». Нажмите «Add», а затем в родительском окне нажмите «Save».
Для сведения, Icecast полностью поддерживает SSL/TLS-шифрование. Здесь мы не будем углубляться и сделаем простую настройку.
Итак, давайте поговорим о звуке! Следуя духу FOSS, мы будем использовать Opus (полностью открытый, бесплатный, очень универсальный и широко поддерживаемый аудиокодек, также созданный Xiph.org) для нашего потока.
В разделе « Settings » перейдите на вкладку «Audio». Установите «Samplerate» на 48000 Гц (требуется для Opus), проверьте, чтобы в «Primary Audio Device» был подключен ваш микрофон, и установите «Streaming Codec» на Opus:
Наконец, вернитесь на вкладку « Main» и нажмите «Save».
Теперь вы можете закрыть окно «Settings». Когда вы будете готовы, нажмите на кнопку «Play», которая запустит ваш поток. Если вы все настроили правильно, то в данный момент вы начинаете трансляцию радиопотока на своем сервере!
Отлично! Теперь давайте войдем в веб-интерфейс Icecast по адресу «http://LAN_IP:8000/admin/», где LAN_IP адрес вашего сервера Icecast. Введем «admin» в качестве имени пользователя вместе с настроенным паролем администратора Icecast:
Выберите «Mountpoint List» на главной странице администратора:
И скачайте файл плейлиста нажав на ссылку «M3U». Он нам понадобится в дальнейшем.
Выбор клиента-слушителя
Клиенты-слушатели практически не требуют настроек. Благодаря HTML5-аудио вы можете слушать даже через веб-браузер.
Можно воспользоваться для прослушивания созданного нами онлайн-радио, например, довольно популярным мультимедийным проигрывателем VLC. Открыв в нем скачанный нами файл stream.opus.m3u
Если вы слышите свой поток, значит Icecast работает.
Дополнительная конфигурация
Icecast имеет множество дополнительных функций. Вот некоторые из них:
- Поддержка нескольких потоков одновременно на одном сервере
- Система «fallback», которая может программно перемещать слушателей между точками монтирования (mountpoint)
- Функции ретрансляции, распределяющие потоки по нескольким серверам
- «Аутентификация URL», аутентификация пользователей на специальном сервере/базе данных (появятся с версии 2.5)
- Встроенная возможность chroot
- Публикация потока в каталоге Icecast YP
- Режим совместимости с Shoutcast
Эти и другие возможности очень хорошо описаны в официальной документации Icecast.
Вы также можете использовать проброс портов для доступа к вашему стриминговому серверу из внешней сети.
Продвижение вашей станции
Продвижение зависит от типа станции, которую вы создаете. Если это просто развлечение, то достаточно рассказать об этом друзьям и родственникам!
Если же вам нужно большее внимание, то включите свою станцию в каталог Icecast, создайте качественный сайт и проведите комплексную маркетинговую кампанию, например, в социальных сетях. Это верный способ привлечь к себе внимание в Интернете.
Заключение
В этой статье мы рассмотрели самый простой пример создания онлайн-радио. Для более серьезного решения можно использовать в качестве клиента-источника кроссплатформенную программу с открытым исходным кодом Mixxx.
И самая важная информация, которую можно дать вам при создании вашей первой потоковой радиостанции - получайте удовольствие! Результат будет очень полезным и полным захватывающих моментов, которыми вы будете дорожить. Удачи.