[Tuto] Raspberry Pi + Liquidsoap + Icecast

raspberry_liquidsoap_icecast


Cet article n’est plus à jour. Nous vous invitons à consulter celui-ci → https://technic2radio.fr/tuto-liquidsoap-raspberry-pi-via-opam/

Vous aurez ainsi la dernière version de Liquidsoap d’installé sur votre raspberry pi.
Néanmoins, si vous souhaitez suivre le tutoriel de cette page (car plus facile), attention au traitement de son, ils ont tendances à être trop gourmand en ressource et cela pourrait interrompre le stream.


Dans ce tutoriel nous allons partir à la découverte de Liquidsoap, le couteau suisse du streaming multimédia. Liquidsoap est gratuit et open-source. Plus d’infos : http://savonet.sourceforge.net/

Notre objectif est de transformer le Raspberry Pi en « client source » pour Icecast (ou shoutcast) et permettre ainsi de diffuser votre flux audio vers Icecast pour que vos auditeurs puissent vous écouter via le web.

Pour ce tutoriel, nous avons utilisé le matériel suivant :

Pré-configuration

Pour commencer, il faut télécharger l’image de Raspbian Jessie : https://www.raspberrypi.org/downloads/raspbian/

Une fois téléchargé et décompressé, nous passons par Win32 Disk Imager (si vous êtes sous Windows) pour transférer l’image sur la carte SD.

Une fois la carte SD inséré dans le Raspberry Pi et que tout est branché, on commence par tout mettre à jour :

$ sudo apt-get update
$ sudo apt-get upgrade

Liquidsoap

Pour installer Liquidsoap, rien de plus simple :

$ sudo apt-get install liquidsoap

Nous allons ajouter quelques plugins nécessaires :

$ sudo apt-get install liquidsoap-plugin-all
$ sudo apt-get install ladspa-sdk multimedia-audio-plugins

Configuration

Il nous reste à créer le fichier qui contiendra les paramètres de configuration :

$ sudo nano /etc/liquidsoap/radio.liq

On ajoute les lignes suivantes (à modifier en fonction des paramètres de votre Icecast et de votre radio)
Le gros plus de liquidsoap ce sont les plugins. Pour cela nous allons suivre les indications fournit par cet article : http://freedrool.us/blog/liquidsoap-audio-effects

Exemple de fichier radio.liq :

#!/usr/bin/liquidsoap

stream = input.alsa(device="plughw:1,0")
stream = sky(stream)
stream = compress(stream, attack = 5.0, gain = 8.0, knee = 10.0, ratio = 5.0, release = 100.0, threshold = -18.0, rms_window = 0.7)
stream = normalize(stream, target = -1.0, threshold = -65.0)
stream = limit(stream, threshold = -0.2, attack = 2.0, release = 25.0, rms_window = 0.02)
output.icecast(%mp3(bitrate=128, samplerate=44100, ),
host="XX.XX.XXX.XXX",
port=8000,
password="XXXX",
mount="radio.mp3",
url="https://technic2radio.fr",
name="technic2radio",
genre="Music",
description="Test Liquidsoap",
public=false,
fallible=true,
stream)

Il faut maintenant rendre exécutable le fichier :

$ sudo chmod +x /etc/liquidsoap/radio.liq

On modifie les droits du fichier de log de liquidsoap (« pi » l’utilisateur par défaut du Raspberry Pi) :

$ sudo chown -R pi /var/log/liquidsoap

On test si tout fonctionne :

$ /etc/liquidsoap/radio.liq

Tout fonctionne ? C’est parfait !

Auto start

Maintenant, nous allons faire en sorte que liquidsoap se lance au démarrage du Raspberry Pi. Pour cela nous allons éditer le fichier .bashrc :

$ sudo nano .bashrc

Et nous allons ajouter les lignes suivantes :

if [ $(tty) == /dev/tty1 ]; then
 /etc/liquidsoap/radio.liq 
fi

On enregistre et on quitte l’éditeur. On reboot le Raspberry Pi pour vérifier que tout se lance bien au démarrage et on se rend à l’ip du flux Icecast pour tester l’audio (http://XX.XX.XXX.XXX:8000/radio.mp3)