Как запустить автоматизированную интернет-радиостанцию ​​в серверной среде?

Я использую серверную среду Ubuntu с icecast-2.3.2 и ices-0.4.0, чтобы включить потоковое интернет-радио.

У меня есть каталог с музыкальными файлами, в основном MP3, давайте назовем его /PATH/TO/MUSIC, У меня также есть каталоги с джинглами и подкастами. /PATH/TO/JINGLES а также /PATH/TO/PODCASTS,

Пока мой сервер запущен и работает.

Что работает:

  • Создание ежедневных случайных списков воспроизведения из музыкального каталога, используя скрипт и задание cron.
  • Запуск IceCast2-Server и потоковая передача файла списка воспроизведения с использованием IceS.

Мой вопрос сейчас:

  • Как играть подкасты и джинглы в определенное время? Например, каждый полный час определенного звонка или каждый четверг в 8 часов вечера определенного подкаста?

Я пытался найти в интернете эту тему, но, похоже, не существует "одного окончательного решения" для этой проблемы радиоавтоматики, и также кажется, что многие решения довольно странные, не так ли?

Имейте в виду, что это серверная среда, решения с графическим интерфейсом не помогут.

Я ценю любые подсказки и опыт по этой теме!

2 ответа

Решение

Ответ: жидкое мыло.

liquidsoap, швейцарский армейский нож для потоковой передачи мультимедиа, особенно используемый для сетевых радиопередач и веб-трансляций. Он имеет множество функций, это бесплатно и с открытым исходным кодом!

Мне потребовалось несколько дней, чтобы понять, как генерируются потоки. liquidsoap состоит из небольших скриптов, которые описывают параметры потока. простой скрипт, который загружает и воспроизводит mp3-плейлист, назовем его basic.liq, показать ниже:

#!/usr/bin/liquidsoap

# load a playlist file
stream = playlist("/path/to/playlist.pls")

# output the playlist to icecast
source = output.icecast(%mp3, host="localhost", port="8000",
         mount="listen.m3u", password="hackme")
source(stream)

протестируйте скрипт с:

$ liquidsoap --check ./basic.liq

и запустите скрипт с:

$ liquidsoap ./basic.liq &

но жидкое мыло гораздо мощнее. например, чтобы играть джингл каждый час, просто добавьте:

# add a jingle every full hour
jingle = single("/path/to/jingle.mp3")
add([stream,switch([({0m0s},jingle)])])

но намного больше функций описано на домашней странице:

  • статические или динамические списки воспроизведения
  • выбор источника звука по времени
  • вставки на основе квоты или времени или смеси джинглов
  • живые выступления DJ
  • интерактивные запросы пользователей
  • полностью настраиваемые переходы, например, плавный переход
  • речевой синтез метаданных трека
  • простой доступ к удаленным файлам
  • и многое другое

Стоит взглянуть на краткое руководство, более сложный пример и документацию.

AzuraCast: автономный веб-менеджер радио

Источник: https://github.com/AzuraCast/AzuraCast

Azuracast - это автономный пакет управления веб-радио, включающий инструменты для установки под ключ и простое в использовании веб-приложение для управления станциями. http://azuracast.com/

Характеристики

С AzuraCast вы можете:

  • Управляйте мультимедиа: загружайте песни из Интернета, упорядочивайте музыку по папкам и просматривайте песни в браузере.
  • Создание списков воспроизведения: настройте стандартные списки воспроизведения, которые будут воспроизводиться постоянно, запланированные списки воспроизведения для периодов времени или специальные списки воспроизведения, которые воспроизводятся один раз за x песен или один раз за x минут.
  • Настройка живых диджеев: включите или отключите прямую трансляцию с стримеров / диджеев и создайте индивидуальные учетные записи для каждого стримера.
  • Возьмите запросы слушателя: пусть ваши слушатели запрашивают определенные песни из ваших плейлистов, как через API, так и через простую общедоступную страницу слушателя.
  • Аналитика и отчеты: следите за каждым аспектом слушателей вашей станции с течением времени. Просмотр отчетов о исполнении каждой песни.
  • Автопилот станции: AzuraCast может автоматически назначать песни в плейлист на основе влияния песни на номера слушателей.
  • Управление делегатами: создание и удаление отдельных учетных записей администраторов для каждого менеджера станции.
  • ...и больше.

Поддерживаемое программное обеспечение веб-радио

  • AzuraCast использует LiquidSoap в качестве "AutoDJ" для перетасовки песен и плейлистов и обеспечения постоянного онлайн-трансляции. Вы также можете подключиться к LiquidSoap и транслировать свои собственные концерты в качестве диджея.

  • Чтобы транслировать вашу радиостанцию ​​на всеобщее обозрение, AzuraCast поддерживает оба золотых стандарта в веб-радио: IceCast (v2.4) и ShoutCast (v2). Вы можете выбрать, какой из них ваша станция использует в любое время.

Вы также можете использовать AzuraCast в качестве инструмента для ретрансляции или сбора статистики прослушивателей и других данных о станциях, которыми AzuraCast не управляет.

Поддерживаемые операционные системы

Есть два способа установить AzuraCast:

  1. Использование Docker и Docker Compose (рекомендуется). Этот метод содержит все зависимости AzuraCast в предварительно созданных изображениях контейнера. Обновление и установка выполняются быстрее, и проблем с совместимостью программного обеспечения гораздо меньше. Этот метод работает на любом компьютере, который поддерживает последнюю версию Docker Engine и Docker Compose; оба могут быть установлены как часть сценария установщика AzuraCast.

  2. Традиционная установка (только Ubuntu 16.04). Из чистого образа Ubuntu вы можете установить AzuraCast непосредственно на свой сервер, используя прилагаемые сценарии установки, которые используют Ansible для управления зависимостями. При использовании этого метода установка и обновление выполняются медленнее, но у вас больше контроля над программным обеспечением после установки. Если на вашем сервере установлено другое программное обеспечение, оно может конфликтовать с AzuraCast, поэтому всегда начинайте с чистой установки, используя этот метод.

Мы всегда стремимся расширить нашу совместимость с хост-операционными системами и приветствуем любую помощь в создании новых сценариев развертывания для других сред.

Что входит в AzuraCast

Используете ли вы традиционный установщик или контейнеры Docker, AzuraCast зависит от того же стека программного обеспечения для работы:

  • NGINX для обслуживания веб-страниц и радио-прокси
  • MariaDB в качестве основной базы данных
  • PHP 7.2 для веб-приложения
  • InfluxDB для статистики на основе временных рядов
  • Redis для сессий, базы данных и общего кэширования
  • LiquidSoap как всегда играющий "AutoDJ"
  • IceCast 2 как интерфейс радиовещания (Icecast-KH установлен на поддерживаемых платформах)
  • ShoutCast 2 DNAS в качестве альтернативного внешнего интерфейса (только для x86/x64) Установка AzuraCast

Установка AzuraCast

Установка докера (рекомендуется)

Мы настоятельно рекомендуем установить и использовать AzuraCast через Docker. Все необходимые программные пакеты создаются нашими автоматизированными инструментами, поэтому установка осуществляется так же просто, как и извлечение предварительно скомпилированных образов. Не нужно беспокоиться о совместимости с операционной системой вашего хоста, поэтому любой хост (включая Windows и MacOS) будет отлично работать из коробки.

  1. Установите Docker и Docker Compose На вашем компьютере или сервере должна быть установлена ​​новейшая версия Docker и Docker Compose. Вы можете использовать простые сценарии ниже для установки обоих, если вы начинаете с нуля:

    wget -qO- https://get.docker.com/ | sh
    COMPOSE_VERSION=`git ls-remote https://github.com/docker/compose | grep refs/tags | grep -oP "[0-9]+\.[0-9][0-9]+\.[0-9]+$" | tail -n 1`
    sudo sh -c "curl -L https://github.com/docker/compose/releases/download/${COMPOSE_VERSION}/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose"
    sudo chmod +x /usr/local/bin/docker-compose
    sudo sh -c "curl -L https://raw.githubusercontent.com/docker/compose/${COMPOSE_VERSION}/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose"
    

    Если вы не устанавливаете от имени пользователя root, вам могут быть даны инструкции по добавлению текущего пользователя в группу Docker (т.е. usermod -aG docker $user). Вы должны выйти из системы или перезагрузиться после выполнения этого, прежде чем продолжить ниже.

  2. Извлеките файл создания AzuraCast Docker

    Выберите, где на главном компьютере вы хотите, чтобы файл конфигурации AzuraCast существовал на вашем сервере.

    Внутри этого каталога выполните эту команду, чтобы получить файл конфигурации Docker Compose.

    curl -L https://raw.githubusercontent.com/AzuraCast/AzuraCast/master/docker-compose.yml > docker-compose.yml
    
  3. Запустите установщик AzuraCast Docker

    Из каталога, в котором находится файл конфигурации YML, выполните следующие команды:

    docker-compose pull  
    docker-compose run --rm cli azuracast_install
    docker-compose up -d
    

Настройка HTTPS с помощью LetsEncrypt

AzuraCast теперь поддерживает полное шифрование с LetsEncrypt. LetsEncrypt предлагает бесплатные SSL-сертификаты с простой проверкой и обновлением.

Сначала убедитесь, что ваш экземпляр AzuraCast настроен и обслуживается из домена, который вы хотите использовать. Затем выполните следующую команду, чтобы создать новый сертификат LetsEncrypt:

docker-compose run --rm letsencrypt certonly --webroot -w /var/www/letsencrypt  

Вам будет предложено указать свой адрес электронной почты и имя домена. Проверка будет происходить автоматически. После завершения выполните эту команду, чтобы указать nginx использовать ваш новый сертификат LetsEncrypt:

docker-compose run --rm nginx letsencrypt_connect YOURDOMAIN.example.com

Перезагрузите nginx, используя команду ниже:

docker-compose kill -s SIGHUP nginx

Ваш сертификат LetsEncrypt действителен в течение 3 месяцев. Чтобы обновить сертификаты, выполните эту команду:

docker-compose run --rm letsencrypt renew --webroot -w /var/www/letsencrypt  

Обновление с помощью Docker

Внутри базового каталога, куда копируется AzuraCast, выполните следующие команды:

docker-compose down
docker-compose pull
docker-compose run --rm cli azuracast_update  
docker-compose up -d  

Резервное копирование и восстановление тома Docker

AzuraCast имеет служебные сценарии, позволяющие легко создавать резервные копии и восстанавливать тома Docker.

Вы можете использовать docker-backup.sh для резервного копирования существующих томов. Вы можете указать пользовательский путь в качестве аргумента скрипта. По умолчанию скрипт создает файл backup.tar.gz в корне приложения.

Чтобы восстановить состояние приложения из этого сжатого файла, используйте docker-restore.sh и укажите путь к существующему файлу резервной копии.

Обратите внимание, что процесс восстановления заменит любую существующую базу данных или носитель AzuraCast, которая существует внутри томов Docker.

Традиционная установка (только Ubuntu 16.04)

Примечание. Некоторые веб-хосты предлагают пользовательские версии Ubuntu, включающие различные репозитории программного обеспечения. These may cause compatibility issues with AzuraCast. Many VPS providers are known to work out of the box with AzuraCast (OVH, DigitalOcean, Vultr, etc), and are thus highly recommended if you plan to use the traditional installer.

AzuraCast is optimized for speed and performance, and can run on very inexpensive hardware, from the Raspberry Pi 3 to the lowest-level VPSes offered by most providers.

Since AzuraCast installs its own radio tools, databases and web servers, you should always install AzuraCast on a "clean" server instance with no other web or radio software installed previously.

Execute these commands as the root user to set up your AzuraCast server:

apt-get update
apt-get install -q -y git
mkdir -p /var/azuracast/www
cd /var/azuracast/www
git clone https://github.com/AzuraCast/AzuraCast.git .
chmod a+x install.sh
./install.sh

If you cannot directly log in as the root account on your server, try running sudo su before running the commands above.

The installation process will take between 5 and 15 minutes, depending on your internet connection.

Once the terminal-based installation is complete, you can visit your server's public IP address ( http://ip.of.your.server/) to finish the web-based setup.

обновление

AzuraCast also includes a handy updater script that pulls down the latest copy of the codebase from Git, flushes the site caches and makes any necessary database updates. Run these commands as any user with sudo permissions:

cd /var/azuracast/www
sudo chmod a+x update.sh
sudo ./update.sh
Другие вопросы по тегам