Raspberry Pi Radio partie 4 : ajouter une source

Cet article est la suite de celui-ci!

Prérequis

Au moins avoir suivi les parties 1 et 2 de cette série de tutos.

Objectif

Là, on rentre dans le dur des spécificités de Raspbian et je suis fier (même si vous vous en foutez) de vous dire que les lignes suivantes sont le fruit de ma propre transpiration! Je suis donc ravi de vous en faire profiter.

L’ajout d’une source n’est pas facile car MPD n’existe que pour faire tourner une source à la fois, même si elle est propagée sur plusieurs sorties simultanément.

Ce qui veut dire, en toute logique, que pour avoir plusieurs sources simultanées, il faut… Plusieurs MPD. Suivez le guide!

Procédure

  1. Duplication des fichiers utilisés

Dans un premier temps, nous allons dupliquer l’ensemble des éléments de MPD qui nous intéressent vers une instance que nous appellerons MPD2 :

sudo cp -a /etc/mpd.conf /etc/mpd2.conf
sudo cp -a /var/lib/mpd /var/lib/mpd2
sudo cp -a /run/mpd /run/mpd2
sudo cp -a /usr/bin/mpd /usr/bin/mpd2
sudo cp -a /etc/init.d/mpd /etc/init.d/mpd2
sudo cp -a /lib/systemd/system/mpd.service /lib/systemd/system/mpd2.service
sudo cp -a /etc/default/mpd /etc/default/mpd2
sudo cp -a /var/log/mpd /var/log/mpd2

2. Mise à jour de /etc/init.d/mpd2

sudo nano/etc/init.d/mpd2

Ce fichier permet de lancer notre seconde instance de mpd au démarrage. Afin que cela fonctionne, il va falloir altérer les lignes suivantes :

# Provides: mpd2
...
NAME=mpd2
DESC="Music Player Daemon #2"
DAEMON=/usr/bin/mpd2
MPDCONF=/etc/mpd2.conf
...
if dpkg-statoverride --list --quiet /run/mpd2 > /dev/null; then
...
dpkg-statoverride --force --quiet --update --add $( dpkg-statoverride --list --quiet /run/mpd2 ) 2> /dev/null

Sauvegardez et quittez.

3. Mise à jour de /lib/systemd/system/mpd2.service

sudo nano /lib/systemd/system/mpd2.service 

La suite consiste à mettre à jour le fichier de service de notre nouvelle instance. Altérez donc les lignes suivantes :

EnvironmentFile=/etc/default/mpd2
ExecStart=/usr/bin/mpd2 --no-daemon /etc/mpd2.conf
...
Also=mpd2.socket

Sauvegardez et quittez.

4. Mise à jour de mpd2.conf

Le coeur du problème! Maintenant que les fichiers périphériques sont mis à jour, il est temps de s’attaquer à notre seconde source.

sudo nano /etc/mpd2.conf

Deux manières de faire : soit vous séparez tout le monde (chaque source a sa librairie), soit les deux sources ont la même librairie. Personnellement (faites votre choix), j’ai opté pour séparer tout le monde, MAIS le lien symbolique dans music_directory pointe sur la même librairie que ma source principale.

music_directory "/var/lib/mpd2/music"
...
playlist_directory "/var/lib/mpd2/playlists"
...
db_file "/var/lib/mpd2/tag_cache"
...
log_file "/var/log/mpd2/mpd.log"
...
sticker_file "/var/lib/mpd2/sticker.sql"

Maintenant, pour les lignes suivantes, c’est de l’obligatoire :

pid_file "/run/mpd2/pid"
...
state_file "/var/lib/mpd2/state"
...
port "6601" #Sinon MPD2 sera sur le même port que MPD, donc niet!

Pour ce qui est du bloc audio_output{} :
– Changez impérativement mount (pour la suite, j’utiliserai /radio2.ogg)
– Gardez impérativement le port 8000 (qui ne change jamais pour Icecast!)

Ceci fait, sauvegardez et fermez.

5. Mise à jour de /etc/icecast2/icecast.xml

sudo nano  /etc/icecast2/icecast.xml 

Ici, nous allons simplement rajouter la fallback mount entre les deux que nous avons renseignées lors de la partie 2 de ce guide :

<mount>
    <mount-name>/radio2.ogg</mount-name>
    <fallback-mount>/silence.mp3</fallback-mount>
    <fallback-override>1</fallback-override>
</mount>

Enregistrez et fermez.

6. Lancez!

Attention, astuce ici : il faut avant chaque lancement de MPD2 faire une copie du fichier PID de mpd. Je n’ai pas trouvé comment faire ça autrement 🙁

sudo cp -a /run/mpd /run/mpd2
sudo systemctl start mpd2

Suivi de, si tout va bien :

sudo systemctl status mpd2

Si vous n’avez aucune erreur et Active (running), alors vous avez gagné!

Configurer la playlist pour votre seconde source

Attention! Lors de l’écriture de cet article, ympd qui est le l’éditeur web ne fonctionne pas pour la seconde instance de mpd, malgré le -p 6601 spécifié pour le lancement (je m’y prends comme un pied probablement).
Du coup, seul ncmpc fonctionne pour l’édition de playlist!

sudo ncmpc -p 6601

Conqueluzion

Nous avons une seconde source qui tourne. A noter que si la stabilité de Icecast+une seule source est bonne même avec Jeedom et WordPress à côté, j’ai des réserves sur Icecast+2 sources dans les mêmes circonstances, en tout cas sur mon Raspberry Pi 3.

Dans le prochain chapitre, nous allons nous débarrasser d’Icecast!

Leave a Reply

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