Streaming verso icecast/shoutcast da linux

Streaming verso icecast/shoutcast da linux

La tecnologia di streaming audio può essere fatta con protocolli diversi ma principalmente Icecast e Shoutcast, mentre questo post non vuole evidenziare i pro e i contro dell’uno rispetto all’altro, vogliamo condividere una soluzione per i client di streaming su Linux, tramite terminale. Linux è un sistema operativo non facile, ma con molte funzionalità e soluzioni. Ed è gratuito quindi vale la pena spendere un po’ più di tempo (intendo ore e giorni) cercando di trovare una buona soluzione per le tue esigenze. La mia esigenza era un client in streaming audio mp3 da un server senza un’interfaccia utente a un server Icecast ed ad un server Shoutcast.

Ho bisogno di un client Linux in grado di eseguire lo streaming di una playlist di file su Icecast e/o Shoutcast

Esistono diverse soluzioni che possono farlo:

  • Ezstream è un client Linux, ma funziona solo con il server Icecast
  • Liquidsoap può gestire sia Icecast che Shoutcast, ma il processo di installazione può essere complicato (più complicato di quanto mi aspettassi) su una macchina CentoOS
  • Darkice può riprodurre in streaming sia Icecast che Shoutcast ma non consente lo streaming di una playlist
  • mpd/mpc soluzione fattibile, ma non è così facile da configurare
  • Butt è uno strumento grafico e da terminale non può fare tutto ciò di cui abbiamo bisogno. E non consente lo streaming di una playlist

Ecco i miei vincoli: prima di tutto il sistema operativo è una distro Linux CentOS, e questo non può essere cambiato. Poi ho bisogno di qualcosa che possa gestire una playlist di file, infatti il mio caso d’uso è lo stop estivo, o di vacanza, di una web radio (https://www.radiocittaperta.it dove ho anche un programma Katzenjammer). I file sono i podcast di tutti gli spettacoli registrati durante l’anno, e il server è il computer dove si trova il sito web.

Quindi, dopo aver scavato e cercato su Google, ho scoperto che la soluzione perfetta e più semplice è usare VLC. VLC è un noto software per riprodurre quasi tutti i tipi di file, ma forse non tutti sanno che può essere utilizzato anche per lo streaming su un server Icecast o Shoutcast e, inoltre, può essere utilizzato senza un’interfaccia grafica. Quindi ecco la riga di comando utilizzata per lo streaming.


cvlc --color dshow://dshow-adev="" "/path/playlist.m3u" --loop --sout-keep --sout  "#std{access=shout{name=your radio name,description=your radio description,url=https://www.yourwebsite.com,mp3=1,bitrate=128},mux=mp3,dst=source:admin@your-icecast-host:your-icecast-port/your-endpoint}"

Dove:

cvlc la versione senza user interface di vlc

playlist.m3u il file playlist

loop finita la playlist, ricominica da capo

sout-keep significa “suona e non ti fermare se è finito il file”

name=your radio name il nome della tua radio

description=your description la descrizione della tua radio

url=https://www.yourwebsite.com il sito web della tua radio, se ne ha uno

mp3=1 questo è necessario per fare streaming di file mp3

bitrate=128 stream bitrate

dst=source:admin@your-icecast-host:your-icecast-port/your-endpoint questi sono tutti l’host, la porta, l’endpoint, il nome utente e la password del server icecast.

Questo eseguirà semplicemente lo streaming su un server, supponiamo che sia un server Icecast, quindi se vuoi anche eseguire lo streaming su un server icecast dovresti raddoppiare questo comando ma, fortunatamente per noi, c’è un comando più avanzato che può farlo per noi:

 

/usr/bin/cvlc --color dshow://dshow-adev="" "/home/admin56306114/playlist.m3u" --loop --sout-keep --sout '#duplicate{dst=std{access=shout{name=your radio name,description=your radio description,url=https://www.yourwebsite.com,mp3=1,bitrate=128},mux=mp3,dst=source:admin@your-icecast-host:your-icecast-port/your-icecastcast-endpoint},dst=std{access=shout{name=your radio name,description=your radio description,url=https://www.yourwebsite.com,mp3=1,bitrate=128},mux=mp3,dst=source:admin@your-shoutcast-host:your-shoutcast-port/your-shoutcast-endpoint}}' > /dev/null 2>&1 &

 

> /dev/null 2>&1 & significa: fallo in background e non disturbarmi con righe di log inutili!

Grazie all’opzione duplicata possiamo inviare lo stesso flusso a più server. Opzioni e valori sono facili da capire e configurare.

MiroAdmin