[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

14 réflexions au sujet de “[Tuto] Liquidsoap + Raspberry Pi via Opam”

  1. SAlut,
    je reviens à la charge. J’ai suivi le tuto mais bien sûr je coince.
    Tout d’abord quand vous mentionnez de ne pas installer les paquets, desquels s’agit ils ? j’ai peur de les avoir installer …
    Et ensuite lorsque que je veux lancer le la commande pour démarrer le flux j’ai ceci : « /etc/liquidsoap/radio.liq
    bash: /etc/liquidsoap/radio.liq : /usr/bin/liquidsoap : mauvais interpréteur: Aucun fichier ou dossier de ce type » j’ai alors googlé pour avoir la solution et j’ai dos2unix le radio.lib. Mais rien n’y fait.
    Où aurai je fauté ?
    Merci beaucoup !

    Répondre
    • Bonjour,
      Lorque vous lancez cette commande :
      $ opam depext taglib mad lame vorbis cry pulseaudio liquidsoap
      il vous est demandé si vous voulez installer ou non les paquets.

      Je vous invite à repartir de zéro en réinstallant l’image de Raspbian

      Répondre
      • Oui je pense qu’à force d’échecs je dois avoir un amas de fichiers corrompus.
        Je vais donc repartir de zéro.
        Merci

        Répondre
    • @jean-re
      Si vous avez l’erreur suivante :

      $ /etc/liquidsoap/radio.liq
      bash: /etc/liquidsoap/radio.liq : /usr/bin/liquidsoap : mauvais interpréteur: Aucun fichier ou dossier de ce type

      C’est probablement parce que vous n’avez pas créé l’utilisateur « liquidsoap » ?
      J’ai eu la même erreur en ayant nommé différemment l’utilisateur « liquidsoap »

      Répondre
      • Bonjour , j’ai bien fait toute l’install et sans erreur, tuto super clair, mais j’ai l’erreur décrite ci dessus, le user liquidsoap existe pourtant bien, doit on être sous le user root, ou bien liquidsoap pour lancer le radio.liq ?

        Répondre
  2. [Note pour plus tard]
    Pour l’auto-start de liquidsoap :

    $ sudo raspi-config
    Boot Options → Desktop / CLI → Console Autologin → Ok → reboot

    $ sudo nano .bashrc

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

    Répondre
    • @mickael
      Oui ça marche pour l’AAC+
      Avant de suivre le tuto, il faut suivre les étapes suivantes :

      $ sudo apt-get install dh-autoreconf libtool libtool-bin git
      $ mkdir src && cd src
      $ git clone https://github.com/Opendigitalradio/fdk-aac.git
      $ cd fdk-aac
      $ ./bootstrap
      $ ./configure
      $ make
      $ sudo make install
      $ sudo ldconfig

      Répondre
  3. Bonjour et Merci !
    je rencontre un problème, j’ai bien une émission de mon signal avec liquidsoap depuis :

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

    stream = input.alsa(device= »plughw:0,0″)
    output.icecast(%mp3(bitrate=128, samplerate=44100, ),
    host= »192.168.1.74″,
    port=8000,
    password= »1270″,
    mount= »Nate.mp3″,
    url= »https://technic2radio.fr »,
    name= »technic2radio »,
    genre= »Music »,
    description= »Test Liquidsoap »,
    public=false,
    fallible=true,
    stream)

    Mais sur icecast une fois que je télécharge mon fichier « Mount Point /Nate.mp3 » mes lecteurs me donne ce genre d’erreurs :
    « VLC ne peut pas ouvrir « http://192.168.1.74:8000/Nate.mp3 ». Vérifiez les messages pour plus de détails. »

    Si vous avez une idée de la susceptible cause du problème merci de m’en faire part

    Répondre
    • Bonjour,
      Peut-être que cela est du au copier/coller mais les guillemets ne sont pas corrects dans votre fichier ( » et ″ ).
      Icecast est-il installé sur la même machine ?
      Avez-vous essayé de lire votre flux via votre navigateur internet ? (Chrome, Firefox)

      Répondre
  4. Bonsoir c’est bon, vous pouvez supprimer le commentaire précédent s’il vous plaît.
    Par contre il est possible avec liquidsoap de streamer à la sortie de la carte audio ?
    J’utilise une mini carte son USB … J’ai l’impression que c’est que le micro pris en compte.

    Répondre
  5. Hi! My erorre:
    no more csLADSPA plugins
    At line 15, character 7: The variable radio defined here is not used anywhere
    in its scope. Use ignore(…) instead of radio = … if you meant
    to not use it. Otherwise, this may be a typo or a sign that your script
    does not do what you intend.

    what’s wrong?

    Répondre
  6. Note pour mise à jour vers liquidsoap 1.3.7 avec Raspbian
    $ sudo apt install git ocaml m4 bubblewrap
    $ git clone https://github.com/ocaml/opam
    $ cd opam
    $ ./configure
    $ make lib-ext
    $ make
    $ sudo make install
    $ cd
    $ su liquidsoap
    $ opam init
    $ opam switch create 4.07.0
    $ opam switch 4.07.0
    $ ocaml –version

    Répondre

Laisser un commentaire