Serveur de musique Mopidy

mopidy  est un serveur audio léger et modulaire. L'installation décrite ici concerne

Références

Sommaire


1 - Terminologie

2 - Installation

2.1 - Préalable

pi@raspberrypi:~ $ cat /etc/issue
Raspbian GNU/Linux 10 \n \l
pi@raspberrypi:~ $ sudo aptitude update && sudo aptitude upgrade -y
pi@raspberrypi:~ $ ip route
default via 192.168.0.1 dev eth0 proto dhcp src 192.168.0.19 metric 202
default via 192.168.0.1 dev wlan0 proto dhcp src 192.168.0.20 metric 303
192.168.0.0/24 dev eth0 proto dhcp scope link src 192.168.0.19 metric 202
192.168.0.0/24 dev wlan0 proto dhcp scope link src 192.168.0.20 metric 303
xxxxx@buster:~$ ping 192.168.0.20
xxxxx@buster:~$ ping 192.168.0.19
$ speaker-test -c2 -twav

2.2 - Installation de mopidy

pi@raspberrypi:~ $ sudo aptitude install python3-pip

pi@raspberrypi:~ $ python3 -V
Python 3.7.3

pi@raspberrypi:~ $ pip3 -V
pip 18.1 from /usr/lib/python3/dist-packages/pip (python 3.7)
pi@raspberrypi:~ $ wget -q -O - https://apt.mopidy.com/mopidy.gpg | sudo apt-key add -
pi@raspberrypi:~ $ sudo aptitude update
pi@raspberrypi:~ $ sudo aptitude upgrade
pi@raspberrypi:~ $ sudo aptitude install mopidy

2.3 - Vérification de l'installation

pi@raspberrypi:~ $ mopidy deps
Executable: /usr/bin/mopidy
Platform: Linux-5.4.72-v7l+-armv7l-with-debian-10.6
Python: CPython 3.7.3 from /usr/lib/python3.7
Mopidy: 3.0.2 from /usr/lib/python3/dist-packages
GStreamer: 1.14.4.0 from /usr/lib/python3/dist-packages/gi
Detailed information:
Python wrapper: python-gi 3.30.4
Relevant elements:
Found:
uridecodebin
souphttpsrc
appsrc
alsasink
.....
Not found:
flump3dec
mad

L'absence des codes flump3dec et mad ne semble pas poser de problèmes .....

pi@raspberrypi:~ $ gst-launch-1.0 audiotestsrc ! autoaudiosink
pi@raspberrypi:~ $ gst-launch-1.0 audiotestsrc ! audioresample ! autoaudiosink
pi@raspberrypi:~ $ gst-launch-1.0 audiotestsrc ! audioconvert ! audioresample ! autoaudiosiknk

Dans le cas présent, la source audio est alsa et autoaudiosink peut-être remplacé par alsasink

pi@raspberrypi:~ $ gst-launch-1.0 audiotestsrc ! alsasink

3 - Utilisation

pi@raspberrypi:~ $ mopidy 

Si le message d'erreur

ERROR    2020-11-23 00:22:05,134 [2206:MainThread] mopidy.commands
Frontend (HttpFrontend) initialization error: HTTP server startup failed: [Errno 98] Address already in use

s'affiche, il est probable qu'une autre instance de mopidy ait déjà été lancé, ce que l'on peut vérifier avec

pi@raspberrypi:~ $ ps -C mopidy
PID TTY TIME CMD
2117 pts/1 00:00:01 mopidy

la stopper avec l'une des commandes suivantes

pi@raspberrypi:~ $ Ctrl C 
pi@raspberrypi:~ $ pkill mopidy
pi@raspberrypi:~ $ kill 2717
pi@raspberrypi:~ $ lsof -i:6680
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mopidy 3001 pi 7u IPv4 29741 0t0 TCP localhost:6680 (LISTEN)
....
pi@raspberrypi:~ $ links2 http://localhost:6680
# équivalent à
pi@raspberrypi:~ $ links2 http://127.0.0.1:6680

La page d'accueil s'affiche et indique qu'aucune extension n'est installé

4 - Configuration

4. 1 - Principe

pi@raspberrypi:~ $ mopidy config
......
pi@raspberrypi:~ $ cat .config/mopidy/mopidy.conf 
# For further information about options in this file see:
# https://docs.mopidy.com/
#
.....
.....

4.2 - Serveur web - Mopidy-http

[http]
....
#hostname = 127.0.0.1

par l'adresse du raspberry sur le réseau local, dans notre exemple192.168.0.20

[http]
....
hostname = 192.168.0.20
pi@raspberrypi:~ $ links2 http://192.168.0.20:6680
xxxx@buster :~ $ firefox http://192.168.0.20:6680

4. 3 - Explorateur de fichier audio - Mopidy-file

[file]
....
# $XDG_MUSIC_DIR|Music
# ~/|Home
[file]
...
media_dirs = ~/Music

4. 4 - Playlists m3u - Mopidy-m3u

 .local/share/mopidy/m3u
$ cat .local/share/mopidy/m3u/mes_stations.m3u8 
#EXTM3U

#EXTINF:-1,ANTENNE BAYERN Schlagersahne
http://stream.antenne.de/das-schlager-karussell

.....

-1 indique qu'il s'agit d'un flux sans durée limite

4.5 - Flux audios - Mopidy-stream

[stream]
#enabled = true
#protocols =
# http
# https
# mms
# rtmp
# rtmps
# rtsp

4.5 - Recherche dans les archives - Mopidy-Local

pi@raspberrypi:~ $ sudo pip3 install Mopidy-Local
[local]
media_dir = ~/Music
pi@raspberrypi:~ $ Ctrl C
pi@raspberrypi:~ $ mopidy
pi@raspberrypi:~ $ mopidy local scan 

4.6 - Récapitulatif

$ cat .config/mopidy/mopidy.conf
[http]
hostname = 192.168.0.20

[file]
media_dirs = ~/Music

[local] media_dir = ~/Music

5 - Mopidy service

5.1 - Configuration

pi@raspberrypi:~ $ sudo cat /etc/mopidy/mopidy.conf

[http]
hostname = 192.168.0.20

[file]
media_dirs = /var/lib/mopidy/Music

[local] media_dir = /var/lib/mopidy/Music
$ sudo mkdir /var/lib/mopidy/Music
$ sudo chown -R mopidy:audio /var/lib/mopidy/Music
$ sudo mkdir /var/lib/mopidy/m3u
$ sudo chown -R mopidy:audio /var/lib/mopidy/m3u

par exemple

pi@raspberrypi:~ $ ls -l /var/lib/mopidy/m3u/
total 16
-rw------- 1 mopidy audio 614 nov. 28 15:16 '[Radio Streams].m3u8'

5.2 -  Commandes

Les commandes deviennent

pi@raspberrypi:~ $ sudo systemctl start mopidy
pi@raspberrypi:~ $ sudo systemctl stop mopidy
pi@raspberrypi:~ $ sudo systemctl enable mopidy
pi@raspberrypi:~ $ sudo mopidyctl deps
pi@raspberrypi:~ $ sudo mopidyctl config
pi@raspberrypi:~ $ sudo mopidyctl local scan

6 - MusicBox-Webclient

'[Radio Streams].m3u8'
pi@raspberrypi:~ $ sudo pip3 install Mopidy-MusicBox-Webclient
xxxx@buster:~ $ firefox http://192.168.0.20:6680/mopidy/
xxxx@buster:~ $ firefox http://192.168.0.20:6680/musicbox_webclient
http://174.36.206.197:8000/listen.pls?sid=1

Annexe 1 - Exemple d'obtention de fichiers audio formats variés

$ wget https://lasonotheque.org/UPLOAD/wav/1447.wav
convertir le fichier dans différents formats utilisés, par exemple flac, ogg, mp3 (nécessite ffmpeg)
$ for i in {flac,ogg,mp3}; do ffmpeg -i file_example_WAV_1MG.wav file_example_WAV_1MG.$i; done

$ ls file*
file_example_WAV_1MG.flac file_example_WAV_1MG.ogg file_example_WAV_1MG.mp3 file_example_WAV_1MG.wav

Annexe 2 - Exemple de playlist m3u de flux radios

$ cat radio.m3u8
#EXTM3U

#EXTINF:-1,France Inter http://direct.franceinter.fr/live/franceinter-midfi.mp3?ID=76zqey582k
#EXTINF:-1,France Musique http://opml.radiotime.com/Tune.ashx?id=s50774
#EXTINF:-1,France Culture http://opml.radiotime.com/Tune.ashx?id=s50768
#EXTINF:-1,France Bleue Loire Océan
http://opml.radiotime.com/Tune.ashx?id=s36096
#EXTINF:-1,FIP Nantes
http://opml.radiotime.com/Tune.ashx?id=s50770
#EXTINF:-1,Radio Classique
http://opml.radiotime.com/Tune.ashx?id=s74355
#EXTINF:-1,Radio Venise
http://174.36.206.197:8000/listen.pls?sid=1
#EXTINF:-1,Radio Italie Classique
http://176.31.107.8:8204/listen.pls?sid=1

#EXTINF:-1,Radio Sympa
https://radio11.pro-fhi.net:19095/stream