[Tuto] Liquidsoap + Raspberry Pi via Opam

Ce tutoriel fait suite à un précédent post sur l’installation de Liquidsoap sur Raspberry Pi, afin d’encoder un flux audio et le transmettre à un serveur Icecast. Ce second tuto indique comment installer Liquidsoap en passant par Opam (un gestionnaire de paquet pour OCaml, un langage informatique). L’avantage de cette installation c’est qu’elle permet d’obtenir la dernière version de Liquidsoap.

Pour l’écriture de ce tutoriel, j’ai bénéficié de l’aide de d’autres utilisateurs de Liquidsoap via la mailing-list. Je tiens à remercier Nicholas pour le partage de son tutoriel  ainsi que Romain Beauxis (contributeur de Liquidsoap) pour son aide.

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 Etcher 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 update && sudo apt -y upgrade && sudo apt -y dist-upgrade

Liquidsoap

On commence par installer Opam et M4, indispensable avant d’initialiser Opam

$ sudo apt-get install opam m4

Puis, nous allons créer l’utilisateur « liquidsoap » que nous allons ajouter au groupe « audio »

$ sudo adduser liquidsoap
$ sudo adduser liquidsoap audio

Il vous sera demandé de créer un mot de passe pour l’utilisateur.
On change d’utilisateur et on modifie le dossier dans lequel on se trouve

$ su liquidsoap
$ cd ~

Pour la suite, le terminal risque d’indiquer des erreurs, elles n’ont aucune incidence sur le fonctionnement de Liquidsoap.
Il faudra répondre positivement (y) lors de la demande pour la mise à jour de .bashrc

$ opam init
$ exit
$ su liquidsoap
$ opam update
$ opam install depext

Attention à ne PAS accepter l’installation des paquets à l’étape suivante
→ il faut répondre « n »

$ opam depext taglib mad lame vorbis cry pulseaudio liquidsoap
$ exit
$ sudo apt-get install libmp3lame-ocaml-dev libtaglib-ocaml-dev libalsa-ocaml-dev libpulse-ocaml-dev libmad-ocaml-dev libcry-ocaml-dev libvorbis-ocaml-dev libogg-ocaml-dev libopus-ocaml-dev
$ su liquidsoap
$ opam install lame pulseaudio mad alsa taglib cry opus liquidsoap
$ exit

Liquidsoap est maintenant installé ! 

Configuration

Il nous reste à configurer Liquidsoap et d’ajouter les informations nécessaires : choix de l’encodage, adresse et port du serveur, informations du flux …

$ sudo ln -s /home/liquidsoap/.opam/system/bin/liquidsoap /usr/bin/liquidsoap
$ sudo mkdir /etc/liquidsoap
$ sudo nano /etc/liquidsoap/radio.liq

Exemple de fichier radio.liq

#!/usr/bin/liquidsoap
set("log.file.path", "/tmp/basic-radio.log")

stream = input.alsa(device="plughw:1,0")
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)

Attention à la valeur indiquée pour « plughw », il s’agit de savoir quelle carte son utiliser. Vous pouvez lancer la commande « arecord -l » pour savoir quelle carte son utiliser.

Puis on termine la configuration

$ sudo chmod +x /etc/liquidsoap/radio.liq
$ sudo touch /tmp/basic-radio.log
$ sudo chown -R pi /tmp/basic-radio.log

Pour démarrer le flux, il suffit de lancer la commande et de se rendre à l’adresse du flux

$ /etc/liquidsoap/radio.liq