Xrousse.org

Css
Xrousse
Lynx

Apprendre la MAO libre Linux avec une 64studio

Créer une webRadio libre et gratuite pour diffuser votre musique avec MPD et Icecast2

Posté par Yo' le vendredi 17 août 2007 (vue 11340 fois)

Cette note explique rapidement comment mettre en place un serveur audio (MPD), puis diffuser le flux au format OggVorbis sur Internet (Icecast2). Cette solution permet donc de réaliser facilement une webRadio peu gourmande en ressources, dont les usages variés raviront le musicien: diffusion de musique sur plusieurs PC aux 4 coins du monde, diffusion de compositions...

Le principe

MPD (Music Player Daemon) est un comme son nom l'indique un lecteur/serveur audio qui fonctionne sous forme de daemon (à la manière du serveur de mail exim4 par exemple, c'est à dire en tâche de fond). Cette solution remplacera avantageusement votre vieux lecteur xmms car sans interface graphique, la performance est optimale et sans fioriture. MPD se contrôle donc au moyen d'un client, qui va lui envoyer des commandes. Il existe plusieurs clients, certains graphiques, certains en console. J'utilise personnellement ncmpc, interface ncurse, légère, en mode texte, rapide et simple à utiliser (et tout au clavier!).

Installer et configurer MPD

Cette première partie détaille la configuration de MPD en tant que serveur audio autonome sur un seul ordinateur. Cela permet de lire l'ensemble de vos fichiers audio au format ogg ou mp3, d'écouter des webradios et bien plus encore...

Le package mpd est dans toutes les distributions et s'installe facilement avec aptitude par exemple sous Debian.

Editer le fichier /etc/mpd.conf, en changeant les paramètres 

music_directory
playlist_directory
et éventuellement db_file, log_file, error_file et pid_file, surtout si vous prévoyez d'utiliser mpd dans un compte non root.

Par exemple chez moi:

music_directory        "/mnt/share/mp3"
playlist_directory    "/mnt/share/mp3/playlist"
db_file            "/mnt/share/mp3/.mpd/tag_cache"
log_file        "/mnt/share/mp3/.mpd/mpd.log"
error_file        "/mnt/share/mp3/.mpd/errors.log"
pid_file        "/mnt/share/mp3/.mpd/pid"

Eventuellement précisez quelle carte audio utiliser si vous en avez plusieurs:

audio_output {
    type        "alsa"
    name        "Via Chip"
    device      "hw:1,0" # optional
    format      "44100:16:2" #optional
}
mixer_type      "software"
state_file         "/var/lib/mpd/state"

NB: pour plus de sécurité, vous pouvez décommenter et modifier le paramètre user plus loin dans le fichier de configuration (mais dans ce cas, vous devez vous assurer que le user saisi a les droits d'écritures sur les fichiers définis précédemment (de log par exemple).

Lancer MPD

La première fois, il faut demander de créer la base de données du serveur, à partir de la commande:

# mpd --create-db

Pour lancer mpd:

# /etc/init.d/mpd start

Normalement, mpd se lancera à chaque démarrage du système, comme n'importe quel daemon.

Installer un client pour contrôler mpd

J'ai choisi ncmcp (la version ncurse de mcp, pur produit en ligne de commande), qui s'installe à partir du package Debian du même nom.

ncmcp se lance dans un terminal via la commande:

~ ncmcp

Une fois lancé, il se connecte directement au serveur mpd (sur le port 6600 par défaut).

Commandes de base de ncmcp

Je ne détaille pas, les principales commandes de ncmcp sont accessibles via la touche F1.

En synthèse l'utilisation est simple: votre bibliothèque musicale est accessible via la touche F3. Vous ajoutez des fichiers et des répertoires à votre playlist en vous déplaçant dans vos fichiers, puis en les sélectionnant à l'aide de la touche Espace. 

La playlist est accessible via la touche F2. Vous pouvez sauvegarder une playlist en appuyant sur S. Vous pouvez lancer une recherche dans tous vos fichiers via la touche F5.

Configurer Icecast2, serveur de streaming

A ce stade, MPD émet un flux en local (sur vos enceintes). Nous allons le configurer pour qu'il émette également un flux oggVorbis en streaming.

Simplement modifier la section nommée SHOUT STREAMING du fichier /etc/mpd.conf:

audio_output {
        type            "shout"
        name            "Ma station"
        host            "mon hostname"
        port            "8000"
        mount           "/stream.ogg"
        password        "monpassword"
#     quality         "7.0"
        bitrate         "128"
        format          "44100:16:1"
#
# Optional Paramters
        user            "source"
        description     "Description de la Radio"
        genre           "Jazz"
} # end of audio_output

Laisser le nom 'source' pour le user (à priori). 
Au niveau du hostname, j'ai mis le nom du serveur, sur le réseau interne (son IP privée même...). 
Le mot de passe est important, vous devrez le reporter dans Icecast (à priori).

Au passage, décommentez également la ligne 198:

password                "XXXXXXX@read,add,control,admin"

Cela permet de protéger l'accès à MPD avec un mot de passe. Du coup, vous pourrez vous connecter au serveur via la commande:

~ ncmcp -P XXXXXXXX

Installation et configuration du serveur de diffusion Icecast2

Icecast2 permet de diffuser le flux généré par le serveur audio MPD à tout l'internet, en streaming. Icecast2 permet de diffuser un flux ''source", mais également de relayer une autre station (relay, non expliqué et non mis en place ici).

Installer le package icecast2 via aptitude.

# vim /etc/icecast2/icecast.xml

Le fichier de configuration est en XML, c'est un peu touffu, mais facile à comprendre à la lecture.

Quelques paramètres que j'ai changé:

Ligne 3: Nombre de clients pouvant se connecter simultanément. J'ai limité, ayant un petit serveur peu puissant à la maison.

<clients>5</clients>

Ligne 25: reportez le mot de passe 'monpassword' de la source (mpd).

        <source-password>monpassword</source-password>

Ligne 31: mot de passe admin: j'ai mis celui défini dans mpd pour le compte admin (XXXXXXXX), mais je pense qu'il peut être différent.

       <admin-password>passwordAdminIcecast</admin-password>

Ligne 45: le hostname du serveur: j'ai mis mon adresse IP fixe

    <hostname>xx.yy.zz.ww</hostname>

Pour lancer Icecast2 au démarrage, en tant que daemon, il suffit d'éditer /etc/default/icecast2

et de modifier l'option ENABLE=true à la fin du fichier.

Stoppez icecast2 s'il est lancé pour recharger le fichier de configuration.

#/etc/init.d/icecast2 stop

Lancer le système

Sous root, faire

#/etc/init.d/mpd start
#/etc/init.d/icecast2 start

Pour créer la bibliothèque multimedia de mpd, faire:

# mpd --create-db

Lecture du flux OggVorbis

Sur la base du paramétrage précédent, le flux audio est accessible  à l'adresse:

http://hostname_publique:8000/stream.ogg

N'importe quel lecteur multimédia (xmms, vlc, Winamp...) sera capable de lire ce flux.

Administrer Icecast2

L'interface d'Icecast2 est accessible à l'adresse:

http://hostname_publique:8000

Dans la partie Admin, vous pouvez vous logguer en saisissant les identifiants du compte admin définis dans Icecast (admin / passwordAdminIcecast dans mon exemple).

Arrêter la diffusion

Il suffit d'arrêter les daemons, sous root:

# /etc/init.d/icecast2 stop
# /etc/init.d/mpd stop

Références:

http://www.musicpd.org
http://www.icecast.org/
http://blog.effraie.org/post/2006/11/06/MPD-et-icecast2-Webradio-ou-lecteur-ultime

Commentaires

28/05/2007 - 18:00 -
Smith (visiteur)
bonjour,
votre article est vraiment bien.
J'ai enfin réussi à faire ma radio libre sous debian.
Malheureusement on a pas le droit de la diffuser à l'extérieur.

Merci
28/05/2007 - 23:25 -
Yo' [yo (a) xrousse.org]
Bonjour Smith,

Merci pour ton message. Je n'ai pas fouillé les aspects légaux, mais je pense que tu as le droit de diffuser ta webradio si la musique que tu diffuses est... libre !
27/06/2007 - 14:00 -
pacchi (visiteur) [goucchi_ (a) hotmail.com]
mercie pour votre article ece que en peye pour demarè 1wrbradio.ece que en peue faire de la pub et coment et mercie de bien vouloir maidè.
30/06/2007 - 2:05 -
Yo' [yo (a) xrousse.org]
well,...

Il n'y a pas besoin de payer pour une webradio avec la solution proposée (qui est libre et gratuite). Concernant la pub, je ne suis pas un expert du domaine, mais il ne me semble pas y avoir de contre-indication.

Bon courage pacchi...
04/08/2007 - 1:40 -
djzack (visiteur) [djzack972 (a) hotmail.com]
salut.j'essais de creer une webradio mais c'est galere pour moi vu que je suis novice en informatique.est ce que tu peux prendre mon adresse msn pour m'expliquer ou allé et ou cliquer.merci.mon msn est djzack972@hotmail.com
02/11/2009 - 9:34 -
Rainbow Webradio (visiteur) [rainbowwebradio (a) live.com] www
Bonjour a tous,
Nous avons créé Rainbow Webradio il ya + d'un an, le 18 juin 2oo8.
1oo% dancefloor, le night club toute la journée.
Ecoutez Club RW Electro @ www.RainbowWebradio.tk
bonne semaine à tous
02/11/2009 - 9:35 -
Rainbow Webradio (visiteur) [rainbowwebradio (a) live.com] www
Bonjour a tous,
Nous avons créé Rainbow Webradio il ya + d'un an, le 18 juin 2oo8.
1oo% dancefloor, le night club toute la journée.
Ecoutez Club RW Electro @ www.RainbowWebradio.tk
bonne semaine à tous
03/02/2010 - 16:20 -
Charles Richard NZI (visiteur) [africa.reporters (a) gmail.com] www
Nous voulons creer une web radio gratuite pour la diffusion de nos reportages. Nous sommes une association de journalistes panafricains. Merci de votre contribution.

21/06/2010 - 10:40 -
Konrad (visiteur)
Bonjour et un grand merci à l'auteur. Cet article m'a permis de mettre en place (enfin !) ma webradio.

Si je puis me permettre de signaler une erreur récurrente dans l'article : le client pour MPD est ncmpc (et non "ncmcp").

Aussi, en lançant ncmpc la première fois j'ai obtenu l'erreur "error [15]: problems getting a response from "localhost" on port 6600 : Connexion refusée", alors que MPD fonctionnait parfaitement. Ceci peut être contourné en spécifiant l'adresse de l'hôte au lancement de ncmpc, par exemple :
$ ncmpc --host 127.0.0.1
Si ça peut aider des gens avec le même problème ;-)

Ajouter un commentaire

Anti-Spam: dans la liste de chiffres 8 5 5 0 1

Quel est le premier chiffre de cette suite ?

Imprimé depuis http://www.xrousse.org - Le contenu de ce site est sous license Creative Commons Paternité 2.0. (http://creativecommons.org/licenses/by/2.0/fr)