Pular para o conteúdo

Recepção de streams de rádio

Os streams de rádio geralmente usam o protocolo ICY - um protocolo de streaming criado para transmissão de rádio pela internet. Muitas estações de rádio usam servidores Icecast ou Shoutcast para entregar o seu conteúdo. Embora o ICY seja parecido com o HTTP, ele tem algumas diferenças importantes na forma de tratar metadados e informações do stream.

Se você só conhece o endereço do site da estação de rádio, pode encontrar a URL do stream usando as ferramentas de desenvolvedor do seu navegador:

  1. Abra o site da estação de rádio no seu navegador
  2. Abra o Web Inspector (Ferramentas de desenvolvedor) e vá para a aba Network
  3. Comece a tocar o rádio no site
  4. Na aba Network, procure uma linha do tipo media cujo tamanho não para de crescer
  5. Clique com o botão direito nessa linha e selecione CopyCopy URL

Encontrando a URL do stream de rádio no navegador

A URL copiada é o endereço direto do stream que você pode usar com o FFmpeg.

O Astra não suporta o protocolo ICY diretamente. Mas você pode receber streams de rádio usando o FFmpeg para convertê-los em um formato com o qual o Astra consegue trabalhar.

Use o FFmpeg para receber um stream ICY e enviá-lo como UDP para o Astra receber:

Terminal window
ffmpeg -i http://radio.example.com:8000/stream -c copy -f mpegts 'udp://127.0.0.1:15001?pkt_size=1316'

Depois configure o Astra para receber desse endereço UDP:

udp://127.0.0.1:15001

Para manter o FFmpeg rodando o tempo todo, você pode configurar ele como um serviço do systemd.

Crie o arquivo /etc/systemd/system/radio-name.service com o seguinte conteúdo:

[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

Substitua neste arquivo:

  • Nome do arquivo: use no lugar de radio-name.service um nome relacionado à estação de rádio (se você tiver vários serviços)
  • Description: troque Radio Name pelo nome da estação de rádio
  • URL do stream: troque https://radio-stream:7378 pela URL real do stream da estação de rádio
  • Porta UDP: troque 15001 pela porta UDP que você quer usar

Depois de criar o arquivo do serviço, ative e inicie o serviço com:

Terminal window
systemctl enable radio-name
systemctl start radio-name

Para parar o serviço, use:

Terminal window
systemctl stop radio-name

Para desativar o início automático no boot, use:

Terminal window
systemctl disable radio-name

Por fim, configure o Astra para receber o stream UDP adicionando uma nova entrada com o endereço:

udp://127.0.0.1:15001