Music Player Daemon, Icecast & Beets sur Debian/Raspbian
J’ai, comme beaucoup de personne, pas mal de musique dans un format numérique quelconque.
Ces fichiers musicaux sont stocké sur un seveur de fichier (NAS).
J’ai raspberry pi qui héberge un serveur mpd qui va lire la musique via NFS sur le NAS.
Je diffuse ensuite cette musique sur une “web radio” perso via icecast.
IceCast n’est pas nécessaire au fonctionnement mais j’aime bien la petite page web avec quelques infos sur la musique qui est diffusée…
MPD
MPD est un lecteur audio sans interface… donc en mode serveur. Il permet de diffuser de la musique en local ou sous forme de plux audio. On peut l’utiliser pour créer une pseudo web radio.
Installation
Rien d’extra ordinaire, MPD est dans les dépots raspbian/debian
En root :
apt install mpd
Configuration
Le fichier de configuration se trouve dans /etc/mpd.conf
.
Les entrées suivante me semble les plus importante a configurer :
- music_directory
- log_file
- user
- group
- bind_to_address
- port
- password
Et pour finir, une ou plusieurs sortie audio.
Dans mon cas une sortie de type shout.
audio_output {
type "shout"
encoder "vorbis" # optional
name "Le nom que l'on donne à son Stream"
host "0.0.0.0"
port "8000"
mount "/mon_point_de_montage.ogg"
password "le mot de passe défini dans la conf IceCast"
quality "9.0"
# bitrate "128"
format "44100:16:1"
protocol "icecast2" # optional
user "source" # optional
description "un nom qui va bien" # optional
url "https://mon.url" # optional
genre "mixed" # optional
public "no" # optional
timeout "2" # optional
mixer_type "software" # optional
}
La Future radio sera donc disponible à l’adresse : https://mon.url/mon_point_de_montage.ogg
Client
mpc
On place dans sont .bashrc
:
export MPD_HOST=PASSWORD@localhost
Ou, bien sur, PASSWORD est le mot de passe défini dans le champ password défini dans la conf mpd.
Et on remplace localhost par l’ip de la machine qui va bien. Dans mon cas, le client est sur la machine serveur donc…
ncmpcpp
On ne peut faire plus simple comme nom…
J’ai suivi la fiche sur debian facile.
La configuration par défaut prend en charge le même parametrage que pour mpc donc ça fonctionne out of the box…
IceCast2
Outil pour construire une web radio. On dispose alors d’une page web avec un player qui pointe sur la radio et permet de la diffuser.
IceCast2 : Installation
IceCast est dans les dépots.
apt install icecast2
Sur raspbian, j’ai rencontré un petit soucis… les répertoires /etc/icecast2/admin
et /etc/icecast2/web
était vide… ce qui est embêtant vue qu’ils contiennent le site web et la page d’administration… alors tel un ninja, j’ai récupérer le source de l’application sur le site du projet et j’ai récupéré le contenu de ces deux répertoire.
IceCast2 : Configuration
Ma configuration est très basique…
La configuration se trouve dans /etc/icecast2/icecast.xml
.
<authentication>
<!-- Sources log in with username 'source' -->
<source-password>le mot de passe défini dans la conf IceCast</source-password>
<!-- Relays log in with username 'relay' -->
<relay-password>le mot de passe défini dans la conf IceCast</relay-password>
<!-- Admin logs in with the username given below -->
<admin-user>un_login</admin-user>
<admin-password>un mot de passe</admin-password>
</authentication>
Beets
J’utilise beets pour gérer ma bibliothèque musicale ainsi que pour la génération automatique de playlist.
L’outil est capable :
- d’organiser les répertoires et fichiers
- de gérer les metadatas
- de compléter les metadatas
- de générer des playlists automatiquement.
Je me suis basé sur la documentation et sur divers blog pour parvenir à mes fins !
Beets : Installation
pip install beets
Beets : Configuration
Le fichier de configuration est dans ~/.config/beets/config.yaml
directory: /mon/point/de/montage/des/fichiers
library: /chemin/vers/ma/bdd/beets_musiclibrary.db
import:
move: yes
write: yes
plugins: embedart the duplicates missing info smartplaylist mpdupdate fetchart # activation de quelques plugins natifs
#paths:
# default: %the{$albumartist}/[$year] $album/$track - $title # le motif permettant de nommer les dossiers associés aux albums
the:
patterns: ['^les ', '^le ', '^la ', '^un '] # les mots à virer. Ne pas oublier l'espace ou "Lady Saw" devient "Dy Saw, La" et on ne la reconnait plus
lastgenre:
count: 5 #nombre de catégories à récupérer au max
#https://beets.readthedocs.io/en/v1.3.17/plugins/smartplaylist.html?highlight=playlist
#Le plugin pour générer des playlist automatique
smartplaylist:
relative_to: /mon/point/de/montage/des/fichiers
playlist_dir: /mon/point/de/montage/des/playlists
playlists:
- name: all.m3u
query: ''
- name: beatles.m3u
query: 'artist:Beatles'
- name: film.m3u
query: 'film'
mpdupdate:
host: localhost
port: 6600
password: 'PASSWORD'
fetchart:
cautious: true
cover_names: front back
sources: itunes *
Beets : Utilisation
Client MPD pour Android
Il y en existe plein, je donne juste celui que j’utilise =).