Raspberry Pi Radio partie 1 : en local

Vous avez des musiques? Vous voulez les streamer, soit pour vous, soit pour des amis, et vous n’avez qu’un modeste Raspberry Pi sous la main (enfin, un 3 au moins pour avoir un peu de patate et de la RAM un minimum… 1Go, ça passe)?
Alors bouclez vos ceintures, préparez la piste de danse, on est partis!

Nous allons nous baser sur un excellent tutoriel dont, si vous parlez anglais, je recommande le suivi plutôt que du présent article, à savoir celui-ci : https://kalifi.org/2020/03/internet-radio-with-raspberry-pi-and-icecast.html.

Je vais me reposer sur lui presque entièrement car sa méthode est simplissime et permet d’avoir quelque chose qui fonctionne en vitesse. Attention cela dit, il faut que vous ayez des bases sur l’utilisation du Raspberry Pi, car tout comme l’impression 3D, c’est un truc de bidouilleur, il faut donc se préparer à y laisser du temps… Beaucoup de temps.

Le but

Ce que nous allons faire dans cet article :
– Installer un “streamer” permettant d’envoyer un flux audio (disons “le facteur”),
– Ajouter une unique source audio pour le “streamer” (disons “la lettre”), à partir de vos fichiers audio,
– Installer un logiciel de contrôle basique de liste de lecture (le bureau de poste… ? Disons?).
Le tout en réseau local uniquement (= pas de nom de domaine extérieur; ça sera uniquement le premier pas, le reste viendra dans de futurs articles).

Prérequis

Nous allons utiliser le Raspberry Pi en mode console uniquement. Pas de bureau, à l’ancienne. D’ailleurs, vu le côté gourmand du stream radio, je recommande d’avoir le strict minimum qui tourne sur votre Pi…
Il vous faut donc :
– un accès au Net (duh),
– un accès SSH avec un niveau admin (root) à disposition,
– de quoi vous connecter dessus, genre PuTTY.

– Avoir copié quelques morceaux de musique dans un endroit quelconque sur votre Pi (exemple : /home/pi/music ).
CECI IS IMPORTANT. Retenez bien cet emplacement.

Procédure

Entrez les commandes suivantes :

sudo apt update
sudo apt install mpd
cd /var/lib/mpd/music
sudo ln -s /home/pi/music music

En bref :
– MPD est la source audio (qu’il va falloir configurer),
– Et pour garder les choses simples, nous avons fait un lien symbolique (disons un raccourci, même si c’est faux) là où se trouvent normalement les musiques que MPD va streamer.

sudo nano /etc/mpd.conf

Là, nous allons changer la configuration de MPD.
Dans Nano, tapez Ctrl+W et entrez dans le champ de recherche :

outside_sym

Puis Enter. Faites en sorte de trouver les lignes suivantes et de remplacer les “no” par “yes” :

follow_outside_symlinks "yes"

follow_inside_symlinks  "yes"

Ceci fait, descendez de plusieurs pages jusqu’à trouver le bloc suivant :

#
# An example of an ALSA output:
#
#audio_output {
#       type            "alsa"
#       name            "My ALSA Device"
#       device          "hw:0,0"        # optional
#       mixer_type      "hardware"      # optional
#       mixer_device    "default"       # optional
#       mixer_control   "PCM"           # optional
#       mixer_index     "0"             # optional
#}

La partie importante ici est de vous assurer que l’ensemble du bloc audio_output est commenté (avec un # devant chaque ligne), car nous n’en voulons pas, de ce bloc. Non.
Ceci fait, descendez encore avec Page down jusqu’à tomber sur le bloc suivant, que vous allez faire ressembler à ce qui suit :

#
# An example of a shout output (for streaming to Icecast):
#
audio_output {
        type            "shout"
        encoder         "lame"
#       encoder         "vorbis"                # optional
        name            "Mon stream"
        host            "localhost"
        port            "8000"
        mount           "/radio.ogg"
        password        "hackme"        #laissez comme ça!
#       quality         "5.0"
        bitrate         "192"
        format          "44100:16:1"
#       protocol        "icecast2"              # optional
#       user            "source"                # optional
#       description     ""                      # optional
#       url             ""                      # optional
#       genre           "jazz"                  # optional
#       public          "no"                    # optional
#       timeout         "2"                     # optional
#       mixer_type      "software"              # optional
}

La sortie Shout est ce qui va réellement compter ici, car il s’agit véritablement de l’envoi de la musique.
Notez que nous utilisons ici le format de sortie OGG, mais il est possible de faire avec du MP3 (ça n’a RIEN à voir avec vos morceaux de musique et leur format!). OGG m’a donné de bien meilleurs résultats lors de l’intégration (mieux reconnu par beaucoup de logiciels).
Pour du MP3 malgré tout, référez-vous au tutoriel d’origine.
Enfin, entrez :

sudo systemctl start mpd

Si jamais ça ne fonctionne pas, lisez donc les bons mots d’erreurs issus de journalctl :

sudo journalctl -xe

Et bienvenue dans ladite perte de temps. Normalement, c’est un guillemet qui manque, ou une accolade mal commentée.

Ceci étant fait, nous allons installer Icecast2, qui est “le” programme de streaming.

sudo apt install icecast2

Il n’y a pour le moment rien de spécial à faire dans Icecast, la configuration par défaut suffisant pour une première tentative.
Ceci fait, nous avons Icecast2 et MPD qui sont installés avec leurs passwords par défaut (hackme), ce qui va permettre de nous assurer que les deux causent ensemble.

sudo systemctl start icecast2
sudo systemctl start mpd

Assurez-vous que tout va bien :

sudo systemctl status icecast2
sudo systemctl status mpd

Vous devriez avoir pour les deux un joli statut en vert “active (running)”. Si vous avez active (exited) ou autre, alors y’a un schmol, et c’est de nouveau le moment de perdre du temps.

A ce moment précis, vous avez une source qui envoie du rien à un streamer, qui propage.
Nous allons donc transformer ce rien en quelque chose via YMPD.
Note : si les liens ne fonctionnent plus, rendez-vous ici : https://www.ympd.org/#downloads.

cd /home/pi
wget https://www.ympd.org/downloads/ympd-1.2.3-armhf.tar.bz2
tar -xvf ympd-1.2.3-armhf.tar.bz2
rm ympd-1.2.3-armhf.tar.bz2
sudo ./ympd --webport 8001

Normalement, vous perdez le curseur et c’est parfait. Nous venons de télécharger une interface un peu jolie qui embarque son propre serveur Web et nous allons y accéder via un navigateur à l’adresse :

http://192.168.votre.ip:8001

Si tout se passe bien (normalement si ça se lance, ça ne peut QUE bien se passer), vous devriez avoir un truc du genre :

Evidemment, moi, j’ai de la musique qui passe mais chez vous, ça devrait être vide. Et donc cliquez sur Browse database en haut, vous devriez avoir seulement marqué root. Cliquez dessus, et si vous avez tout bien suivi, les morceaux ou les répertoires que vous avez copié dans /home/pi/music devraient s’afficher.
Si tel n’est pas le cas, cliquez dans Queue sur Update DB.
En passant la souris sur chaque ligne, qu’il s’agisse d’un répertoire ou d’un morceau, un + devrait apparaître sur la droite. En cliquant dessus, vous ajoutez le morceau ou le répertoire à la playlist.
En retournant en haut sur Queue, vous avez les morceaux en attente de lecture. Cliquez sur le gros symbole de lecture et si vous voyez, comme sur l’illustration ci-dessus, un temps de lecture évoluer, vous avez gagné : ça joue!
Pour le moment, je vous recommande de cliquer dans la partie droite sur Repeat (c’est bien plus pratique pour mettre au point).
Ceci étant fait, retournez sur votre Pi et tapez Ctrl-C pour arrêter YMPD : il a terminé son rôle.

Ceci fait, arrive le moment de vérité : dans votre navigateur, tapez l’adresse

http://192.168.votre.ip:8000/radio.ogg

Si vous avez à l’écran quelque chose du genre :

Et que de la musique sort de vos enceintes, alors c’est gagné : vous avez maintenant un stream audio sur votre réseau local! Bravo!

Ce qu’il reste à faire

Maintenant que nous avons un concept qui marche, il est temps de faire des sauvegardes.

1- Sauvegarder!

sudo cp /etc/mpd.conf /etc/mpd.conf.bak
sudo cp /etc/icecast2/icecast.xml /etc/icecast2/icecast.xml.bak

2- Changer les mots de passe

Il est temps de changer vos passwords dans mpd.conf et icecast.xml : avec l’aide de sudo nano, faites en sorte que le password se trouvant dans le bloc audio_output{} de mpd.conf soit le même que celui indiqué comme Source password dans icecast.xml.
Au passage, pondez donc deux passwords un peu chiadés pour Relay et Admin, ça ne fera pas de mal.

3- Terminer la configuration de votre Source

Dans mpd.conf toujours, vous pouvez éditer le mount point (ce qui se trouve après le :8000 de l’adresse de la radio).
Pour le moment, c’est absolument trivial, mais vous allez voir qu’en changer, pour la suite, sera pénible. Donc mettez-vous d’accord sur un nom de mount point, et tenez-vous-y.
Vous pouvez rajouter également une description à votre stream ainsi qu’une URL, mais c’est optionnel.

4- Installer NCMPD

YMPD est certes joli, mais il nécessite un navigateur pour fonctionner et si l’envie vous prend de faire des ajustements de playlist avec uniquement un terminal, il vous faudra NCMPD.

sudo apt install ncmpd

Tapez simplement ncmpd, puis majuscule-1 de la barre horizontale de chiffres (évidemment). Bienvenue dans la Matrice, vous pouvez faire la même chose qu’avec YMPD, mais en mode balèze.

5- Passer d’un morceau à l’autre!

Il est possible que, sur la page de lecture Web de votre radio, la musique se coupe à la fin de chaque morceau, vous forçant à rafraîchir la page. C’est connu, ne vous inquiétez pas, et nous y reviendrons au prochain chapitre!

Conqueluzion

Ceci termine notre première partie de webradio sur Raspberry pi.
Dans le prochain chapitre, assez court, nous allons voir comment faire en sorte que la lecture se poursuive sans mal!

Leave a Reply

Your email address will not be published. Required fields are marked *