Как создать сервер потокового радио с помощью Icecast в Linux

Вы когда-нибудь хотели создать свое собственное интернет-радио? Вы можете это сделать с помощью Icecast. В этой статье мы создадим простое потоковое онлайн-радио.

Icecast - это сервер потокового вещания с открытым исходным кодом на основе стандартов HTTP, созданный фондом Xiph.org. Данный сервер можно использовать для всего: от небольших домашних радиостанций до крупных корпоративных интернет-радиостанций.

Для начала работы вам понадобится, как минимум, только компьютер и подключенный микрофон. Icecast доступен для Linux/Unix и Windows. Существуют аналогичные проекты, такие как Shoutcast, Snapcast и AzuraCast, но мы будем использовать 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.

И самая важная информация, которую можно дать вам при создании вашей первой потоковой радиостанции - получайте удовольствие! Результат будет очень полезным и полным захватывающих моментов, которыми вы будете дорожить. Удачи.