Des « clients » pour serveur Mini DLNA et UPnP

Des « clients » pour serveur Mini DLNA et UPnP

Dans deux articles précédents de cette série , nous avons installé un serveur miniDLNA et un lecteur de musique (GMediaRender) sur un Raspberry Pi 3. Maintenant je veux pouvoir écouter la musique de ce Pi sur un téléphone mobile, une tablette ou un PC.

Clients, renderers, serveurs ????

J’ai installé sur le Pi un serveur DLNA qui permet de lister mes musiques et de les proposer à d’autres appareils. Le serveur ne joue pas la musique. Et le serveur ne peut pas décider quelle musique servir.

Pour écouter la musique de ce Pi où que je sois dans le réseau local, il me faut donc deux choses essentielles :

  • un « client» qui va contrôler le serveur et lui dire quelle musique choisir, composer des listes de lecture et dire où les restituer. Ce client peut être un PC, un appareil mobile (android, iOS,…) ou un appareil électronique compatible (une télévision par exemple) ;
  • un « renderer» qui va jouer la musique définie par un client. Souvent le client est également renderer, mais ce n’est pas toujours le cas.

Mes choix de clients et renderers

J’ai installé des clients qui font également « renderer » sur Android ou Windows 10. Sur le Pi, j’ai installé un « renderer » seulement pour qu’il joue de la musique dans un amplificateur situé à proximité. Sur iOS, je ferai des essais plus tard.

Je ne suis pas certaine d’avoir fait les bons choix. J’avais aussi comme critère que les applications soient compatibles DLNA, UPnP et « Open Home » car je veux installer un serveur UPnP sur le Pi (ce sera l’objet du prochain article de cette série). J’ai fait quelques essais et ce qui m’a semblé bien, c’est le choix suivant :

  • Sur Android : BubbleUPnP. Je l’installe et immédiatement Il voit ‘al music’, le « friendly name » du serveur DLNA

BubbleUPnP, client android DLNA et UPnP

  • Sur Windows 10, Windows Media Player. Je l’ai essayé en dernier et il fonctionne parfaitement. Il repère aussi ‘al music’ sans aucun réglage. J’ai donc rangé mes a priori et décidé de l’utiliser ! Sur Windows, VLC fonctionne avec le serveur miniDLNA mais c’est un peu plus compliqué et surtout ça paraît quasi impossible avec UPnP.
  • Sur Linux (Debian), pour le Pi, j’ai installé gMediaRender, dans une version compatible DLNA, UPnP et « Open Home». J’explique tout dans l’article XXX.
  • Dès que j’aurai la visite d’un appareil iOS, je proposerai d’essayer Linn Kazoo (Windows, Mac, android, iPad) ou LUMIN (iPad)
  • J’ai également très envie d’un appareil Chromecast audio qui deviendrait un renderer (une fois que j’aurai installé un serveur UPnP sur le Pi) pour jouer ma musique numérisée sur ma chaine hifi très ancienne.

Nota : pour une utilisation optimale, il faut acheter la licence de BubbleUPnP UPnP/DLNA (montant 3.99 €). Avant de le faire, je vais essayer d’autres solutions Android pour décider laquelle est la plus conviviale :

Je mettrai à jour cet article lorsque j’aurai tranché.

Et maintenant ?

Il faut que j’installe mon serveur UPnP sur le Pi pour avoir une vision globale. Ce sera l’objet du prochain article de cette série, .

GMediaRender sur Raspberry Pi pour lire de la musique d’un serveur DLNA, UPnP, Open Home

GMediaRender sur Raspberry Pi pour lire de la musique d’un serveur DLNA, UPnP, Open Home

Dans cet article de la série, , j’explique simplement comment installer une version compatible DLNA, UPnP et « Open Home » de GMediaRender, fondée sur gmrender-resurrect. Pour en savoir plus sur le fonctionnement d’un serveur DLNA, d’un serveur UPnP et du protocole « Open Home », il vous faudra lire les autres articles de cette série 😯 !

Installer gstreamer 1.0 et gmrender-resurrect UPnP renderer

Selon « Playing music on a Raspberry Pi using UPnP and DLNA (v3) » avec des modifications pour tenir compte que j’ai une installation plus récente, avec en particulier Raspbian Stretch et pas Wheezy.

Pour installer gstreamer 1.0, on copie tout ce qui suit (les deux lignes) et on le colle dans le terminal de notre Pi :

wget -O - http://www.chiark.greenend.org.uk/~christi/debian/christi@coraline.org.gpg.key \

| sudo apt-key add -

On doit avoir un message « OK ».

Ensuite on crée un nouveau fichier /etc/apt/sources.list.d/upnprender.list  pour y ajouter l’adresse du dépôt de Christi Scarborough pour gstreamer 1.0 :

cp /etc/apt/sources.list.d/raspi.list /etc/apt/sources.list.d/upnprender.list

Pour comprendre (un peu) ce qu’est une sources list, voir cet article, en français.

Dans le nouveau fichier on supprime le contenu de raspi.list et on ajoute la ligne suivante. Les instructions originelles disent de terminer par wheezy main. Ce serait juste si on utilisait encore la distribution Wheezy de Raspbian. Mais depuis 2013 elle a été remplacée par Jessie puis Stretch. Comme j’utilise Stretch, je termine par stretch main

deb http://www.chiark.greenend.org.uk/~christi/debian/ stretch main

Puis on met à jour la liste des paquets avant d’installer gmrender-resurrect

apt-get update

Il y a une erreur liée au fait qu’il n’y a pas de version stretch dans le dépôt ‘http://www.chiark.greenend.org.uk/~christi/debian. Mais l’erreur ne paraît pas majeure…

Je poursuis l’installation de gmrender-resurrect en copiant collant l’ensemble des 4 lignes sur une seule ligne du terminal du Pi :

apt-get install libupnp-dev libgstreamer1.0-dev \

gstreamer1.0-plugins-base gstreamer1.0-plugins-good \

gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly \

gstreamer1.0-alsa

Installation de gmediarender

Installer git avec

apt-get install git

On exécute ensuite les commandes suivantes, les unes après les autres :

cd

git clone https://github.com/hzeller/gmrender-resurrect.git

cd gmrender-resurrect

apt-get install autoconf

./autogen.sh

./configure

make install

Ca place gmediarender dans /usr/local/bin  et des icones dans /usr/local/share/gmediarender

Et maintenant on peut ponctuellement lancer le renderer, en lui donnant le nom qu’on veut (l’option –f dit quel nom on veut donner)

./src/gmediarender -f "Pi Bureau"

Ca fonctionne correctement. On fait CTRL C pour en sortir.

Faire fonctionner gmediarender comme un service

Pour que gmediarender démarre comme un service, il faut copier le contenu de  scripts /root/gmrender-resurrect/init.d/gmediarenderer dans /etc/init.d (ou home/votre-nom-d’utilisateur/gmrender-resurrect/init.d/gmediarenderer si vous n’êtes pas connecté en root au Pi)

cp scripts/init.d/gmediarenderer /etc/init.d

On édite /etc/init.d/gmediarender  pour définir le nom du « renderer » et corriger si nécessaire l’utilisateur :

DAEMON_USER="al:audio"

UPNP_DEVICE_NAME="Pi Bureau"

Puis on utilise update-rc.d pour que ces informations soient placées correctement dans le Pi.

update-rc.d gmediarenderer defaults

On redémarre le Pi (reboot  ou shutdown -r now ). gmediarender démarre. On peut le vérifier avec

ps aux|grep gmedia

Cette commande renvoit

552 11.9  6.9 317764 66444 ?        Ssl  10:01   0:02 /usr/local/bin/gmediarender -f Pi Bureau -d -u 7aff11df49801835fb41c5ea6c54bfa0 --gstout-audiosink=alsasink --gstout-audiodevice=sysdefault --gstout-initial-volume-db=-10

root       657  0.0  0.0   4372   560 pts/0    S+   10:02   0:00 grep --color=auto gmedia

Ca fonctionne et le “renderer” s’appelle Pi Bureau.

Sur mon ordinateur Windows, je peux maintenant destiner de la musique à « Pi Bureau » en cliquant à droite sur une liste de lecture ou un morceau dans Windows Media Player.

gMediaRender sur Raspberry Pi

Et maintenant ?

Dans les prochains articles de cette série , j’expliquerai quels « clients » j’ai choisi pour faire fonctionner mon serveur DLNA et jouer de la musique du serveur. J’ajouterai également un serveur BubbleUPnP au Pi afin de disposer d’un partage des listes de lecture et d’un fonctionnement aux normes « Open Home ».

Raspberry Pi : créer un serveur de musique miniDLNA

Raspberry Pi : créer un serveur de musique miniDLNA

Dans le premier article de cette série, , j’ai expliqué comment créer un serveur utilisant MPD. Mais je n’étais pas vraiment satisfaite. Depuis j’ai acheté un Raspberry Pi 3 et je me suis dit qu’il était temps de passer à un niveau supérieur.

Dans cet article, j’explique comment créer un serveur de musique miniDLNA qui va gérer toute ma musique numérique et la rendre accessible via des appareils Android (ou Apple). Dans un prochain article de cette même série, , j’expliquerai comment y ajouter un serveur UPnP.

De quoi j’ai besoin ?

  • Un raspberry Pi 3  ;
  • Un cable ethernet (on peut opter pour le wifi mais ce n’est pas ce que j’ai choisi) ;
  • un disque dur USB ;
  • Une alimentation USB pour le Raspberry Pi et le disque dur.

Préparer le Raspberry Pi (Raspbian Stretch, IP fixe)

J’ai installé Raspbian Stretch Lite (sans la partie graphique) en suivant les instructions de mon article Mise en service d’un Raspberry Pi.

Le « hostname » de mon Pi est : AlMusicServer. C’est le nom que j’utilise pour me connecter.

J’ai réglé ce Pi sur l’adresse IP fixe (connexion ethernet) 198.168.1.102 selon les instructions de mon article Raspberry Pi : connexion internet en wifi et/ou IP fixe.

Régler la sortie audio

Pour le réglage et les tests, je me suis inspirée des articles suivants :

ALSA est le système Linux de gestion du son. Le paquet alsa-utils est pré-installé dans les distributions Raspbian et contient des commandes utiles pour tester et régler le son de notre Raspberry Pi.

J’ai connecté mon Pi via le connecteur Jack 3.5mm. Ce n’est pas la meilleure solution pour une bonne qualité audio. On a intérêt à utiliser au moins une carte son USB, voire un DAC Hifi. Je verrai ça ultérieurement.

Dans le terminal, s’assurer que le mode audio renvoie bien au connecteur jack (et pas HDMI) avec

amixer cset numid=3 1

Pour tester le son

!!! Attention à bien enfoncer le connecteur Jack, sinon il y a du bruit dans les HP et rien ne fonctionne !!!

speaker-test

Ca fait un bruit (léger) dans les haut parleurs. Il faut régler le volume fort pour l’entendre.

aplay /usr/share/sounds/alsa/Noise.wav

Fait aussi du bruit, qu’on entend que si le volume est très fort

Pour voir les périphériques audios et leurs pilotes

aplay –l  liste tous les périphériques audio présents

lsmod  permet de voir quel pilote est associé au(x) périphérique(s) audio.

Pour régler le son

amixer controls  renvoie

numid=3,iface=MIXER,name='PCM Playback Route'

numid=2,iface=MIXER,name='PCM Playback Switch'

numid=1,iface=MIXER,name='PCM Playback Volume'

numid=5,iface=PCM,name='IEC958 Playback Con Mask'

numid=4,iface=PCM,name='IEC958 Playback Default'

Playback switch règle le son sur “ON” ou « OFF ».  Réglé sur On, le son sort des haut parleur au volume défini pat numid=1 (playback volume). Réglé sur Off, les haut pareleurs sont muets quel que soit le réglage de volume.

amixer cget numid=1  doit donc nous indiquer quel est le réglage du volume. Ca me dit :

; type=INTEGER,access=rw---R--,values=1,min=-10239,max=400,step=0

  : values=-2000

  | dBscale-min=-102.39dB,step=0.01dB,mute=1

Pour régler le son au maximum, je tape (noter qu’au lieu de cget j’utilise cset) :

amixer cset numid=1 100%

Maintenant aplay /usr/share/sounds/alsa/Noise.wav  émet maintenant un son que j’entends mieux.

Et pour régler le volume sur 100% et la sortie sur ON et qu’elle soit utilisée à chaque redémarrage du Pi

amixer cset numid=1 100%

amixer cset numid=2 on

alsactl store

Mon son fonctionne.

Si j’utilisais une carte son USB (on en trouve à des prix dérisoires), il faudrait que j’identifie son microprocesseur selon https://learn.adafruit.com/usb-audio-cards-with-a-raspberry-pi/figure-out-your-chipset. Ensuite selon le microprocesseur utilisé, je suivrais les instructions d’Adafruit dans le tutoriel USB Audio Cards with a Raspberry Pi.

Ajouter un disque dur USB

Connecter un disque dur USB puis suivre les instructions de mon article Monter un disque dur externe partagé sur un Raspberry Pi.

Ma musique est dans /media/iomega/MULTIMEDIA/musique.

Installer un serveur miniDLNA

DLNA ?

Cet article, en français, explique plutôt bien ce qu’est le DLNA. Pour résumer, je dirai juste Le DLNA (Digital Living Network Alliance) a été créé par Sony et d’autres entreprises pour définir des pratiques permettant le partage de médias digitaux entre appareils électroniques. En 2015, selon Wikipedia, plus de 200 entreprises participaient à cette alliance.

Installation de mini DLNA sur notre Raspberry Pi 3

J’ai suivi les instructions de Raspberry Pi Media Server – MiniDLNA., avec une correction pour que la base de données se mette à jour correctement lorsque je modifie les fichiers de musique (source : ce sujet sur le forum Raspberrypi.org)

apt-get install minidlna

Copier le fichier de configuration pour le conserver avant modification

cp /etc/minidlna.conf /etc/minidlna.OLD

puis modifier /etc/minidlna.conf

Ma musique est dans /media/iomega/MULTIMEDIA/musique suite à l’installation du disque dur. Il ne faut pas mettre directement ce répertoire dans la configuration de miniDLNA car dans ce cas inotify ne fonctionne pas correctement.

On doit laisser un répertoire local (sur la carte SD) et on crée un lien vers la véritable localisation des fichiers de musique ensuite… Comme ça inotify fonctionne, c’est à dire qu’il surveille en permanence si des fichiers sont modifiés et met alors la base de données à jour (si les modifications sont réalisées pendant que miniDLNA fonctionne).

Je modifie donc les lignes suivantes (pour la ligne inotify=yes, j’ai simplement décommenté la ligne) :

media_dir=A,/var/lib/minidlna/music

db_dir=/media/iomega/MULTIMEDIA/

friendly_name= AL Music

inotify=yes

Dans le terminal du Pi, je définis un lien entre /var/lib/minidlna/music et /media/iomega/MULTIMEDIA/musique :

ln -s /media/iomega/MULTIMEDIA/musique /var/lib/minidlna/music

On peut verifier que ça fonctionne en cliquant sur /var/lib/minidlna/music dans filezilla. On est enmené automatiquement sur /media/iomega/MULTIMEDIA/musique

Je démarre le service avec la commande

service minidlna start

Le disque tourne pendant un bout de temps.

Le log est dans /var/log/minidlna.log . Pour savoir en temps réel ce qui se passe, je peux utiliser

service minidlna status

Dans l’explorateur Windows, un clic sur “Réseau » affiche AL Music. Si je clique dessus, j’accède au lien http://192.168.1.102:8200/.

Si j’ai modifié les fichiers pendant l’arrêt de miniDLNA, je redémarre en forcant la reconstruction de la base de données :

service minidlna force-reload

Gestion des utilisateurs

C’est assez bizarre que je ne doive pas définir d’utilisateur et de groupe pour miniDLNA. Mais comme tout semble fonctionner… Si jamais on a un problème, il faudra peut-être s’inspirer de cet article de la documentation Ubuntu.

Lire des radios internet avec MiniDLNA

Dans ce forum, la solution de phile est de créer une playlist contenant les url des radios souhaitées et le sauvegarder en mode .txt avant de le renommer avec une extension .m3u. L’auteur met même une playlist exemple en téléchargement sur dropbox ici.

Ensuite on place le fichier dans le répertoire musique du Pi, /media/iomega/MULTIMEDIA/musique/.

Avec Windows Media Player, si je clique sur « Playlists » dans la bibliothèque DLNA « AL Music », je vois toutes mes listes, y compris la liste que je viens de placer. Mais je ne peux pas la lire. PAr contre, si je lis une radio internet (CTRL U dans Windows Media Player puis lien vers un flux internet, par exemple http://chai5she.cdn.dvmr.fr/bfmbusiness pour BFM), je peux la mettre dans la play list créée et elle apparaît bien dans le contenu de mon Pi (/media/iomega/MULTIMEDIA/musiqueRadio – 2015 12 04 – HCFR.m3u.

C’est sans doute lié au problème d’utilisateur indiqué plus haut… A suivre !

Et maintenant ?

Dans un prochain article de cette même série, , j’expliquerai quelles applications on peut utiliser pour accéder au serveur à partir d’un PC ou d’un appareil mobile présent sur le réseau local. Un autre article expliquera comment ajouter un serveur UPnP à notre Raspberry Pi pour rendre l’utilisation vraiment confortable, voire même accéder à notre musique via internet.

Raspberry Pi : créer un serveur de musique avec mpd

Raspberry Pi : créer un serveur de musique avec mpd

J’ai de la musique digitalisée sur un disque dur. Je voudrais la partager dans toute la maison sans avoir à laisser un PC gourmand en route 24/24. Je crée donc un serveur de musique sur un Raspberry Pi disposant d’un disque dur externe. J’utilise mpd comme serveur.

Note du 11/1/2018 : ce serveur ne me plaisait pas vraiment car je ne trouvais pas d’application Android vraiment agréable pour le gérer. Et je ne voyais pas comment l’utiliser pour gérer des listes de lecture et des destinations différentes. J’ai donc repris le collier sur le sujet. J’ai créé d’autres articles de la série pour créer un serveur bien mieux, avec mini DLNA et UPnP.

Dernière MAJ : 11 janvier 2018

Comment fonctionne un serveur de musique ?

J’ai eu beaucoup de mal à comprendre quoi choisir…

Je me suis refusée à prendre des systèmes qui arrivent avec la distribution, je voulais apprendre quelque chose en installant un serveur par dessus une distribution Raspbian classique (Jessie Lite dans mon cas).

Lorsqu’on a de la musique sur un disque dur, il nous faut trois éléments pour pouvoir l’entendre quelque part :

  1. un serveur de musique, qui gère les fichiers, les indexe et les met à disposition ;
  2. un client, qui agit sur le serveur pour lui dire quoi jouer, créer des « playlists », lui dire où émettre les sons générés par la playlist.
  3. un « renderer » (je ne vois pas comment traduire ça), qui restitue la musique dans des haut-parleurs.

mpd tient lieu de serveur. Sur le même pi, on place un client (mpc) avec lequel on peut intéragir en ligne de commande. Et si on connecte le Pi contenant mpd à des haut-parleurs (ou à un ampli), c’est mpd qui assure la fonction de « renderer ».

Si je veux jouer de la musique à partir du même disque dur dans d’autres endroits, j’ai deux possibilités :

  1. lire le flux audio du premier Pi et le jouer sur l’équipement qui le lit. Par exemple, je peux l’écouter sur une tablette équipée de MPdroid, qui va tenir lieu de client, mais qui va aussi servir de renderer pour un éventuel flux audio.
  2. installer d’autres Pi équipés de mpd. Dans ce cas, il semblerait (je n’ai pas encore essayé) qu’il faut installer icecast sur le premier Pi et c’est icecast qui se charge de transmettre les fichiers au deuxième Pi.

Préparer le Raspberry Pi

J’utilise un Raspberry Pi B+, avec un dongle wifi Edimax EW-7811Un. Pour le préparer, suivre ces trois autres articles de ce site :

J’ai donc un Pi correctement installé, avec un disque dur externe monté sur le répertoire /media/iomega et partagé par samba.

Note du 2/1/2018 : je l’ai aussi fait sur un Pi 3 sans souci

Installer mpd

J’ai principalement utilisé les sources suivantes :

Installer le serveur mpd, le client mpc et le gestionnaire de son alsa-utils.

apt-get install mpd mc alsa-utils

Installer les codecs qui pourraient être utiles :

apt-get install lame flac faad vorbis-tools

Vérifier que le son sort du Raspberry Pi

brancher des haut-parleurs dans la prise jack audio du Pi. On utilise la carte audio (plutôt mauvaise sur le Pi version 1).

Selon cet article, en anglais, on teste un son comme ça :

aplay /usr/share/sounds/alsa/Front_Right.wav

Si aucun son ne sort, on vérifie que le driver audio Broadcom est bien présent

lsmod | grep snd_bcm2835

S’il y a quelque chose qui s’affiche, c’est bon. Sinon, il faut charger le driver avec

modprobe snd_bcm2835

Si la commande s’éxécute sans message d’erreur c’est que c’est bon.

Mais aucune des deux commandes suivantes ne produit de son dans mes hauts parleurs

speaker-test -t sine -f 440 -c 2 -s 2
aplay /usr/share/sounds/alsa/Front_Center.wav

Je force donc l’utilisation de la sortie analogique dans laquelle les haut-parleurs sont connectés. Sinon c’est la sortie HDMI qui est utilisée par défaut.

amixer cset numid=3 1

Je n’entend toujours rien. Je monte le volume des haut-parleurs et là c’est bon.

configurer mpd

Pour bien comprendre le contenu du fichier de configuration, voir The Music Player Daemon – User’s Manual.

mpd a en principe créé un utilisateur ‘mpd’, qui appartient au groupe ‘audio’.

Modifier la configuration de samba

Les utilisateurs du groupe ‘audio’ doivent pouvoir lire les contenus de /media/iomega/MULTIMEDIA/musique et écrire dans /media/iomega/MULTIMEDIA/mpd.

Dans etc/smb.conf etc/samba/smb.conf (modifié le 2/1/2018)

valid users = @users, @audio  #utilisateurs ayant le droit de lire = de groupes @group
read only = yes
write list = @users, @audio   # utilisateurs ayant droit d’écrire
browseable = yes
public = yes

Je pense que ça ne sert à rien de régler valid users  et write list  puisque j’ai défini public=yes .

Modifier la configuration de mpd

éditer /etc/mpd.conf pour que :

music_directory		"/media/iomega/MULTIMEDIA/musique"
playlist_directory	"/media/iomega/MULTIMEDIA/musique/mpd"
db_file			"/media/iomega/MULTIMEDIA/musique/mpd/mpd.db"
user			« mpd »
#group               	"audio"
auto_update     	"yes"

volume_normalization    "yes"

bind_to_address          "192.168.1.102"
port			 "6600"

audio_output {
	type		"alsa"
	name		"Ampli salon"
#	device		"hw:0,0"	# optional
#	mixer_type      "hardware"      # optional
#	mixer_device	"default"	# optional
#	mixer_control	"PCM"		# optional
#	mixer_index	"0"		# optional
}

auto_update permet une mise à jour automatique de la base de données lorsque les fichiers sont modifiés.

Le réglage de la sortie audio de type « alsa » est identique à la configuration par défaut. La seule différence est le nom de cette sortie (« ampli salon »), qui permet d’identifier les sorties dans les clients.

Note : Si j’utilisais une carte son usb, il faudrait changer la ligne device             « hw:0,0 » , probablement en mettant « hw:1,0 ».

Pour savoir quels sont les numéros de cartes audio, taper :

cat /proc/asound/modules

Ça dit quelque chose comme :

0 snd_bcm2835
1 snd_sub_audio

La carte audio du Pi (driver snd_bcm2835) est numérotée 0. La carte USB (ici driver snd_sub_audio) est n°1.

On peut le vérifier en connectant la carte USB aux haut-parleurs puis en tapant :

aplay -D plughw:1,0 /usr/share/sounds/alsa/Front_Right.wav

Si le volume est suffisant (assez élevé), on entend une voix qui dit « front » puis « right ».

Ca fonctionne avec une carte audio à 2.82 € pièce (livraison gratuite si au moins 3 achetées) achetée sur ce site chinois.

J’ai par erreur laissé le # devant group. Cette instruction n’est donc pas utilisée. Ca n’a pas gêné, sans doute car j’avais réglé le disque comme public avec samba.

Créer les répertoires, fichiers et droits d’accès nécessaires

Créer tous les répertoires ou fichiers listés dans etc/mpd.conf et qui n’existent pas. Ensuite, j’ai placé mon utilisateur windows (alwindows) dans le groupe audio, et l’utilisateur mpd dans le groupe users mais je ne suis pas certaine que ça soit indispensable.

adduser mpd users
adduser mpd audio
adduser alwindows audio

Régler les droits d’accès et les propriétaires de tout ce qui se trouve dans les répertoires utilisés par mpd et définis dans mpd.conf :

chown -R mpd:audio /media/iomega/MULTIMEDIA
chmod -R g+rwx /media/iomega/MULTIMEDIA

chown -R mpd:audio /var/log/mpd
chmod -R g+rwx /var/log/mpd

chown -R mpd:audio /run/mpd
chmod -R g+rwx /run/mpd

chown -R mpd:audio /var/lib/mpd
chmod -R g+rwx /var/lib/mpd

Redémarrer samba :

service smbd restart

lancer mpd

mpd

Si bug « « socket: Failed to bind to ‘192.168.1.102:6600’: Address already in use » arrêter mpd avec :

service mpd stop

Puis le redémarrer avec

mpd --no-daemon --stdout --verbose

On voit la base de données qui se met à jour. Ca défile de 19h45 à 19h53 pour 65 Go de musique.

En cas de problème, il peut être utile de lire le log /var/log/mpd/mpd.log

Normalement, pour lancer mpd comme un service, on tape :

/etc/init.d/mpd start

tester avec MPdroid

MAJ : MPdroid fonctionne correctement mais son interface utilisateur est vraiment compliquée. J’ai installé M.A.L.P. – MPD Client, et c’est plus simple à utiliser.

Il suffit de renseigner l’adresse du serveur (192.168.1.102) et du port (6600) et le client se lance sur une tablette android.

Ca fonctionne : de ma tablette je déclenche de la musique.

Ecouter des radios web avec mpd

Je me suis inspirée de Un serveur musical avec MPD et Installation de MPD sur un raspberry pi !.

Dans le répertoire déclaré en tant que « playlist_directory » lors de la configuration de mpd (« /media/iomega/MULTIMEDIA/musique/mpd »), créer un fichier radios.m3u , dans lequel on place les url des radios sous la forme :

#EXTM3U
#EXTINF:-1,Country
http://streaming.radionomy.com/NashvilleEdge

Les sites European radios  et flux Radio liste les adresses de streaming des radios.

Ensuite, régler le propriétaire et les droits d’accès de ce fichier :

chown -R mpd:audio /media/iomega/MULTIMEDIA/musique/mpd/radios.m3u
chmod -R g+rwx /media/iomega/MULTIMEDIA/musique/mpd/radios.m3u

Réglages et création d’un flux audio

Imaginons que j’aime bien la musique qui se joue dans le salon et que j’ai envie de l’écouter dans mon bureau. Dans ce cas, il me suffit d’écouter le flux audio issu du salon. Mpd peut être configuré pour générer un flux audio qu’on peut écouter avec un navigateur internet ou autre lecteur de musique capable de lire un flux internet. On peut même créer une radio web diffusée à l’extérieur. Mais bon, ce n’est pas ce que je veux faire !

Pour générer un flux audio, éditer etc/mpd.conf et régler le « audio_output » de type « httpd » :

audio_output {
	type		"httpd"
	name		"flux httpd"
	encoder		"lame"			# optional, vorbis or lame
	port		"8000"
	bind_to_address "192.168.1.102"   		# optional, IPv4 or IPv6
	quality		"5.0"			# do not define if bitrate is defined
#	bitrate		"128"			# do not define if quality is defined
	format		"44100:16:1"
	max_clients "0"         # optional 0=no limit
}

redémarrer mpd avec service mpd restart .

Pour accéder au flux ainsi défini, on tape l’adresse suivante dans un navigateur (ou un lecteur capable de lire un flux réseau) :

  • http://192.168.1.102:8000/mpd.mp3 si on a réglé l’encodeur sur « lame »
  • http://192.168.1.102:8000/mpd.ogg si on a réglé l’encodeur sur « vorbis »

Mais cette adresse ne fonctionne que si l’on a lancé la génération d’un flux de streaming avec un client. J’ai utilisé Chimney, disponible gratuitement sur le « store » Windows 10 :

  • lancer la lecture de quelque chose ;
  • dans l’onglet général, cocher « stream to desktop » ;
  • dans l’onglet output, cochés les outputs « ampli salon » et « flux httpd » (ce sont les noms que j’ai défini dans mpd.conf) ;
  • dans l’onglet streaming, rien à faire si on n’a pas modifié le port par défaut (8000).

Ensuite, je peux ouvrir le flux audio, dans VLC ou un navigateur internet.

Utilisation de MPdroid

MPdroid est un client android pour mpd.

MAJ : MPdroid fonctionne correctement mais son interface utilisateur est vraiment compliquée. J’ai installé M.A.L.P. – MPD Client, et c’est plus simple à utiliser.

Une fois que le client est installé, il suffit de renseigner les éléments suivants :

  • Hôte : 192.168.1.102
  • Port : 6600
  • Hôte streaming : 192.168.1.102
  • Port streaming : 8000
  • Mot de passe : rien
  • Suffixe url streaming : mpd.mp3
  • Notification persistante : pas coché

Utilisation de VLC (sur PC) pour lire le flux audio

Pour créer un lien rapide vers le flux, on ouvre le flux une première fois à la main, en indiquant http://192.168.1.102:8000/mpd.mp3 dans Média / ouvrir un flux réseau. On lance la lecture.

Ensuite, dans Média / Enregistrer la liste de lecture, on enregistre, par exemple sous le nom salon-stream.xspf  .

Celà crée un fichier (que l’on peut éditer avec notepad++ par exemple) :

<?xml version="1.0" encoding="UTF-8"?>
<playlist xmlns="http://xspf.org/ns/0/" xmlns:vlc="http://www.videolan.org/vlc/playlist/ns/0/" version="1">
	<title>Liste de lecture</title>
	<trackList>
		<track>
			<location>http://192.168.1.102:8000/mpd.mp3</location>
			<title>flux httpd</title>
			<extension application="http://www.videolan.org/vlc/playlist/0">
				<vlc:id>2</vlc:id>
				<vlc:option>network-caching=1000</vlc:option>
			</extension>
		</track>
	</trackList>
	<extension application="http://www.videolan.org/vlc/playlist/0">
			<vlc:item tid="0"/>
	</extension>
</playlist>

Et voilà, un simple clic et j’accède au flux audio sur mon ordinateur Windows.

Et maintenant ?

Je peux explorer l’intérêt de disposer d’UPnP comme expliqué dans cet article de « lesbonscomptes.com » ou avec un media player spécifique tel que proposé ici sur GitHub.

Il faut aussi que je trouve un client sous Windows 10 plus agréable que Chimney.