Перейти к содержимому

Приём радиопотоков

Радиопотоки обычно используют протокол ICY — потоковый протокол, разработанный для интернет-радиовещания. Многие радиостанции используют серверы Icecast или Shoutcast для передачи своего контента. Хотя ICY похож на HTTP, у него есть важные отличия в обработке метаданных и информации о потоке.

Если вы знаете только адрес сайта радиостанции, вы можете найти URL потока с помощью инструментов разработчика в браузере:

  1. Откройте сайт радиостанции в браузере
  2. Откройте Веб-инспектор (Инструменты разработчика) и перейдите на вкладку Network
  3. Включите воспроизведение радио на сайте
  4. На вкладке Network найдите строку с типом media, у которой размер постоянно увеличивается
  5. Кликните правой кнопкой мыши по этой строке и выберите CopyCopy URL

Поиск URL радиопотока в браузере

Скопированный URL — это прямой адрес потока, который можно использовать с FFmpeg.

Astra не поддерживает протокол ICY напрямую. Однако вы можете принимать радиопотоки через FFmpeg, чтобы преобразовать их в формат, с которым Astra может работать.

Используйте FFmpeg для приёма ICY-потока и вывода его в UDP, который Astra сможет принять:

Окно терминала
ffmpeg -i http://radio.example.com:8000/stream -c copy -f mpegts 'udp://127.0.0.1:15001?pkt_size=1316'

Затем настройте Astra на приём с этого UDP-адреса:

udp://127.0.0.1:15001

Чтобы FFmpeg работал постоянно, вы можете настроить его как сервис systemd.

Создайте файл /etc/systemd/system/radio-name.service со следующим содержимым:

[Unit]
Description=Forward Radio Name to Astra
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
ExecStart=/usr/bin/ffmpeg \
-hide_banner -loglevel warning -nostats \
-timeout 5000000 \
-reconnect 1 -reconnect_streamed 1 -reconnect_delay_max 5 \
-re \
-i https://radio-stream:7378 \
-c:a copy \
-f mpegts 'udp://127.0.0.1:15001?pkt_size=1316'
Restart=always
RestartSec=5
StandardOutput=null
StandardError=journal
[Install]
WantedBy=multi-user.target

В этом файле замените:

  • File Name: вместо radio-name.service укажите подходящее имя радиостанции (если у вас несколько сервисов)
  • Description: измените Radio Name на название радиостанции
  • Stream URL: замените https://radio-stream:7378 на фактический URL потока радиостанции
  • UDP Port: измените 15001 на нужный вам UDP-порт

После создания файла сервиса включите и запустите сервис командой:

Окно терминала
systemctl enable radio-name
systemctl start radio-name

Чтобы остановить сервис, используйте:

Окно терминала
systemctl stop radio-name

Чтобы отключить автозапуск при загрузке, используйте:

Окно терминала
systemctl disable radio-name

В завершение настройте Astra на приём UDP-потока, добавив новый вход с адресом:

udp://127.0.0.1:15001