Après avoir passé un certain temps à tenter de faire fonctionner transcode de SHOUTCast, j’ai remarqué qu’il n’était plus du tout supporté, donc pas de build ARM, et des builds assez anciennes.
En naviguant sur le net, je suis tombé sur LiquidSoap qui est plutôt génial !
Première chose, assez importante, il est disponible dans les packets depuis Ubuntu 12 (et Debian whezzy), il est donc intégré et mis à jour.
Un petit coup de apt-get et le tour est joué
apt-get -y install liquidsoap
Dans ma configuration j’ai créé quelques répertoires :
/opt/radio/mp3
/opt/radio/jingle
/opt/radio/safe
/mp3 va contenir toutes les fichiers mp3 pour la radio, ce sont les fichiers qui seront lus par défaut. Il peut y avoir plein de répertoires avec votre musique classée, par défaut LiquidSoap ira lire tous les sous-répertoires
/jingle va contenir les mp3 pour faire les jingle, toutes les heures ou entre les chansons …
/safe va contenir 1 fichier mp3, bidon, qui sera diffusé si la radio est en panne, c’est une sorte de backup.
Au niveau de la configuration, un petit tour du côté de /etc/liquidsaop/radio.liq
#!/usr/bin/liquidsoap # Musique (répertoire où se trouvent les musiques) main = mksafe( smart_crossfade( normalize( playlist("/opt/radio/mp3/")))) # Ajout des jingles (répertoire où se trouvent les jingles) jingles = playlist("/opt/radio/jingle/") # En cas de problème, le stream peut être fait sur un seul fichier en boucle : security = single("/opt/radio/single/musique.mp3") # On y ajoute les jingles radio = random(weights = [1, 10],[jingles, main]) # Et la securite radio = fallback(track_sensitive = false, [radio, security]) # A live source live1 = input.harbor("live1") live2 = input.harbor("live2") #radio radio = fallback(track_sensitive=false, [live1,live2,radio]) # Information de diffusion output.shoutcast(%mp3, name="Live Radio", url="http://ma-radio.fm", port=80, password="plop", radio)
Donc la première ligne est obligatoire pour être interprétée par liquidsoap
On va créer la objet main va contenir la playlist des mp3, le volume sera normalisé (ça évite de sursauter au changement de piste), et on va faire un crossfade entre les pistes (par défaut c’est 2 secondes)
On va créer la objet jingle, qui va contenir la playlist des jingles
On va créer la objet security, qui va contenir notre fichier de sécurité
On va créer notre objet radio, qui va contenir 1 jingle pour 10 pistes de musique, le tout en aléatoire.
On va rajouter à notre objet le fallback, donc la musique de sécurité. « track_sensitive = false » signifie que l’on attend pas une fin de chanson pour faire le basculement, on bascule de suite.
On créé 2 objets live. Il est donc possible de diffuser en live (musique, voix) sur notre radio, depuis un ordinateur externe.
On remet donc notre objet radio avec cette nouvelle option.
La radio se coupe si live1 ou live2 prend la main. Le live2 se coupe si live1 prend la main.
Enfin, on dit comment et vers quoi on diffuse. Ici on envoie le tout sur un serveur SHOUTCast, en mp3 et on donne les informations d’écoute du serveur.
Les mp3 sont lus et ajoutés à la playlist au démarrage de liquidsoap
/etc/init.d/liquidsoap start
Et c’est parti !