MPD et icecast2 - Webradio ou lecteur ultime?
Par effraie le lundi 06 novembre 2006, 17:04 - Logiciel libre - Lien permanent
L'excellent Music Player Deamon est en version 12.1 dans Ubuntu Edgy. C'est une bonne nouvelle, puisque a partir de la version 12, il est capable de servir de source au non moins excellent serveur de streaming Icecast2.
Voila de quoi monter relativement facilement une webradio à la maison, et clouer le bec au légendaire troll sur le meilleur lecteur audio.
N'avez vous jamais rêvé:
- De diffuser vos propres émissions de radio?
- De pouvoir écouter votre musique (oui, les 176 Gigas de mp3 légalement obtenus qui gisent sur votre disque dur) depuis n'importe quel ordinateur connecté à internet?
- De pouvoir modifier, à distance, la playlist que joue votre webradio? et cela même depuis le poste windows™® du boulot ou de tatie georgette? Ou même depuis votre téléphone portable, chez la boulangère de Ploum.
Et bien c'est possible, et même assez simple, grâce au couple MPD et Icecast2. MPD va se charger de la gestion de la collection musicale, de la playlist, de l'interface de gestion (play/pause, précédent/suivant, tout ça) et envoyer le flux de données a Icecast2, qui lui arrosera Internet des notes sirupeuses de votre groupe de funk préféré, ou des débats intellos que vous enregistrez dans votre cave.
Passons a la pratique
/!\ Ce pas à pas ne contient pas de difficultés majeures. Néanmoins, quelques connaissances sur la façon dont fonctionne un serveur et l'édition de fichiers de configuration ne seront pas négligeables...
Prérequis
- Ubuntu 6.10 sur le serveur (j'ai bien fait un backport pour dapper, mais le backport officiel est en cours et je ne conseille pas d'utiliser mon paquet, sauf à vos risques et périls!)
- Un serveur correctement relié au grand extérieur (votre LAN ou internet, selon vos besoins. Ça marche en local sur la machine, mais je ne vois pas l'intérêt...)
- Un lecteur de bonne facture sur la machine cliente (VLC ou Mplayer, par exemple)
Allons-y:
sudo apt-get install mpd icecast2
Pour installer le nécessaire.
Ensuite, il va falloir commencer par éditer la configuration de la source, MPD:
sudo nano /etc/mpd.conf
je vous copie ici les parties utiles de mon propre mpd.conf. Veillez a l'adapter a votre configuration!
# MPD CONFIG FILE
# For a full description of all config parameters,
# Check the mpd man page, "man mpd".
##################### REQUIRED ###########################
# You can put symlinks in here, if you like. Make sure
# user that mpd runs as (see the 'user' config parameter)
# can read the files in this directory
# You can put symlinks in here, if you like. Make sure
# user that mpd runs as (see the 'user' config parameter)
# can read the files in this directory
playlist_directory "/var/lib/mpd/playlists"
music_directory "/media/usbdisk/Musique"
db_file "/var/lib/mpd/mpddb"
port "6600"
log_file "/var/log/mpd/mpd.log"
error_file "/var/log/mpd/errors.log"
pid_file "/var/run/mpd/pid"
##########################################################
# EVERYTHING ELSE IS OPTIONAL
##########################################################
################# SHOUT STREAMING############################
############## (bien plus bas dans le fichier!)#######################
#
# Set this to allow mpd to stream its output to icecast2
# (i.e. mpd is a icecast2 source)
#
audio_output {
type "shout"
name "Effraie's Radio"
host "effraie.org"
port "8000"
mount "/mpd.ogg"
password "YYYYYYYY" #retenez bien ce mot de passe! il sert a icecast2
quality "5.0"
# bitrate "128"
format "44100:16:1"
# Optional Paramters
# user "source"
description "ma musikamoi"
genre "Mon genre a moi"
} # end of audio_output
#
##########################################################
################# SECURITY SETTINGS ######################
#
user "mpd"
#
# Set this value if you only have one
# address you want to allow connection to.
#
#bind_to_address "localhost"
#
# If you want to setup MPD to use
# passwords set them here
#
password "XXXXXXX@read,add,control,admin" # <-- ceci permet de
#password "password2@read" #protéger par mot de passe
# #l'interface de MPD
# Specify permissions used by default when no password is
# given by for a connection/client.
#
#
##########################################
les points importants sont:
- Le paramètre "host" : indiquez votre nom de domaine, ou l'IP publique de la machine ou tournera Icecast.
- Le paramètre "password" : indispensable pour configurer icecast2 ensuite, notez le bien.
- Le paramètre "port" : 8000 convient trés bien, mais vous pouvez le modifier. N'oubliez pas d'ouvrir ce port dans le pare-feu du serveur...
Éditez le fichier de configuration de icecast:
sudo nano /etc/icecast2/icecast.xml
Il s'agit d'un fichier XML, un peu touffu. Ouvrez bien les yeux, ce n'est pas si dur, et il y a peu de choses a modifier.
<icecast>
<limits>
<clients>10</clients> <-- ici, le nombre d'auditeurs simultanés autorisés
... plus bas, ligne 23, reportez le mot de passe de /etc/mpd.conf:
<authentication>
<!-- Sources log in with username 'source' -->
<source-password>XXXXXXX</source-password>
Puis modifiez les paramètres par défaut d'authentification:
<!-- Relays log in username 'relay' -->
<relay-password>YYYYYYYYYY</relay-password>
<!-- Admin logs in with the username given below -->
<admin-user>admin</admin-user>
<admin-password>ZZZZZZZZ</admin-password>
</authentication>
ligne 49, votre hôte (doit correspondre à ce que vous avez rentré au paramètre "host" du fichier de configuration de MPD)
<hostname>effraie.org</hostname>
Ne touchez pas le reste, sauf a savoir ce que vous faites!
Pour que Icecast2 tourne en tâche de fond, éditez également:
sudo nano /etc/default/icecast2
et modifiez la fin du fichier pour obtenir:
ENABLE=true
Le plus dur est fait!
Relancez Icecast2 et MPD pour tenir compte de vos modifications:
sudo /etc/init.d/mpd restart
sudo /etc/init.d/icecast2 stop
sudo /etc/init.d/icecast2 start
Et créez la base de données de MPD:
sudo mpd --create-db
tout devrait désormais être opérationnel, félicitation!
Vous accéderez a l'interface d'icecast à une adresse du type: http://domaine.org:8000
Pour profitez de tout ça
Vous allez avoir besoin d'un client pour vous connecter a MPD, et gérer la source du flux de musique: je ne peux que vous conseiller :
- GMPC, Sonata ou un autre client graphique si vous vous connectez depuis une machine linux.
- Le fabuleux Pitchfork qui vous permettra de gérer votre webradio depuis n'importe quel accés internet!
Vous allez également avoir besoin d'un lecteur audio capable de lire le flux de icecast2 (dans notre exemple, c'est du ogg, mais on peut aussi configurer icecast pour émettre en MP3). Comme toujours, les très bons VLC et Mplayer s'en tirent très bien, y compris comme plugin d'un navigateur.
Normalement, vous pouvez disposer désormais de vos fichiers musicaux avec une liberté et une souplesse inégalée!
Imaginez: Vous êtes à l'étranger, et vous voulez faire découvrir un morceau rare de votre groupe préféré a une nouvelles connaissance: il suffit de trouver une connexion internet, et si ça lui plaît, vous pourrez écouter votre playlist toute la soirée. D'ailleurs, La connaissance en question pourra, si vous le voulez bien, continuer a écouter votre musique quand vous serez rentrez chez vous.
On ressortira le troll du meilleur lecteur audio quand Amarok ou Listen permettront ça, ok?
Comment ça, Amarok c'est plus facile a configurer?
Merci a Dacaerin qui m'a permit d'installer le tout chez moi!





Commentaires
Merci beaucoup pour cet artice super interressant :)
On peut déjà ressortir le troll, gmusicbrowser permet aussi de faire serveur icecast depuis longtemps... Il suffit de choisir icecast comme moteur audio dans les préférences au lieu de gstreamer, mplayer ou mpg321. Par contre, pas d'interface à travers un navigateur type firefox. On peut néanmoins le contrôler en export display ou par n'importe quel moyen de contrôle de bureau à distance.
voui, mais bon... chez tatie georgette ça ne marchera pas, ni a l'autre bout du monde (l'export display à l'autre bout du monde, c'est sport) ni sur un PII sans X. Allez, le troll, couché!
Ça me donne envie d'heberger un serveur chez moi ça! :p
Pas mal du tout pour faire sa webradio !
Sinon, pour écouter ma musique à distance et la télécharger, je reste sur Jinzora :p (tuto : http://sydtux.free.fr/dotclear/inde...)
Whouaw !!! Trop fort... J'essaye tout de suite sur mon serveur ! @+
Merci de m'avoir cité. :p
Je suis content de voir que tu as fini par réussir à le faire fonctionner. :)
À propos de Jinzora, c'est vrai qu'il est très bien aussi. Il a de très intéressantes et puissantes fonctions, même s'il est parfois passablement buggé et pas très joli (malgré la diversité de thèmes tous fait proposés « de base »). Bref, les deux n'ont pas vraiment la même utilité. Ceci-dit, Jinzora gère aussi une connectique avec Icecast2. :p
Et puis bon, on dira ce qu'on voudra, mais gérer sa liste de lecture à distance avec un client graphique pour MPD, ça claque quand-même nettement plus qu'avec une interface en PHP.
Gnump3d est également parfait pour faire du streaming de musique. Pas de DB à générer, authentification possible par fichiers .htpasswd (htpasswd2).
$ sudo apt-get install gnump3d
$ sudo gedit /etc/gnump3d/gnump3d.conf
$ sudo /etc/init.d/gnump3d start|stop|restart
Salut,
Moi j'utilise gnump3d qui permet de gérer ces mp3 en streaming avec interface web! installable aussi facilement qu'un "apt-get install gnump3d"
Juste pour me corriger plus haut où j'ai écrit : « Ceci-dit, Jinzora gère aussi une connectique avec Icecast2. :p »
Il ne s'agit bien évidemment pas d'une connectique avec Icecast2, mais avec MPD.
Bref, Jinzora peut très bien être un complément à MPD + Icecast2.
Toutes mes confuses.
Avis aux spécialistes MPD/ICECAST2 Perso, une fois que MPD est branchée sur ICECAST il n'y a plus de son qui sort de l'ordi ! le son est directement balancé sur icecast2 ... Moi ça m'embête ... ce pourquoi j'utilise le triplet MPD/ICES/ICECAST2 ... ices ne fait que rebalancer le son de l'ordi (tout, mpd compris) sur icecast2 je trouve ça bien plus pratique, car je peux laisser tourner icecast2 tout le temps ...
Sinon, les spécialistes ? y a pas moyen d'avoir ça ?
Hum, je ne suis pas sû d'avoir compris ce que tu voulais, manatlan, mais tu as essayé de décommenter EN PLUS la partie « Audio output » qui convienne à ton serveur son ? Je ne sais pas si ça fonctionne ; je n'ai pas essayé moi-même mais je ne vois a priori rien qui s'y oppose.
################## AUDIO OUTPUT ########################## # # use this if you want to use OSS audio output #audio_output { # type "oss" # name "my OSS sound card" # device "/dev/dsp" # optional # format "44100:16:2" #optional #} # # use this if you want to use ALSA audio output #audio_output { # type "alsa" # name "my ALSA device" # device "hw:0,0" # optional # format "44100:16:2" #optional #} # # as a last resort, try using libao #audio_output { # type "ao" # name "default ao output" #} # # # Set this if you have problems # playing audio files. # This will resample your music so # that it comes out at the set rate. # #audio_output_format "44100:16:2" # ##########################################################J'ai pas tout compris...Si c'est du streaming à installé sur un serveur... pour l'écouté de n'importe où il faut que l'ordis hôte reste en permanence allumé ? vu que icecast semble être juste le protocole...
Ah oui, c'est le principe du serveur ;)
Il y a aussi gnump3d (dans les dépôts) très facile (plus facile, tu meurs) à mettre en place... mais il ne propose pas énormément de fonctionnalités... simple et efficace.
Hello people,
super tuto, j'avais justement entendu parler de cette possibilité, ça tombe super bien car je recherchais un moyen de permettre à des amis d'écouter ce que j'écoutais, afin d'en discuter via msn (j'ai meme un compte jabber si vous voulez...) ;-)
Je vois quelques remarques ici et il convient de mettre les points sur certains i :
jinzora est juste une interface de controle de mpd. c'est donc un "simple" client concurrent direct de phpmp2, utilisable conjointement avec une interface plus graphique :)
pour la partie audio output, c'est interessant si tu ecoutes la musique chez toi, avec des enceintes (ou autres ?) branchées sur ton serveur.
En fait pour ma part j'ai la config qui suit :
1/ PC serveur avec mpd+mpdscribble pour last.fm + apache avec phpmp2 (désinstallé depuis peu pour maintenance) pour tripatouiller mes playlists depuis le taf... sans pouvoir écouter la zik :'(. Le serveur est relié à une chaine hifi.
2/ PC client, ma machine perso, avec un client graphique que j'adore: ncmpc ;-). L'interet est d'avoir de la musique en permanence meme quand ma machine est plantée ou quand je la reboote sous windows (il m'arrive d'avoir une furieuse envie de GTA ou consorts meme si c'est plutot rare ;) ). La sortie audio de ce PC est relié sur l'entrée ligne de mon serveur, mais généralement je coupe le son, seule la musique m'interesse ;)
Et là avec icecast, ça va vraiment déchirer, ouais.... :-)
Super, exactement le tuto que je cherchais.
Par contre au niveau du client mpd, j'ai essayé phpmp2 et je trouve dommage de ne pas pouvoir effacer la liste de lecture sans provoqué l'arret du flux . est ce que c'est pareil pour tout les clients ?
Merci
Christophe
je recherche de l'aide afin de configurer mes ports via la freebox afin de faire tourné winamp et icecast pour pouvoir diffuser!!!
si quelqu'un peut me filé un coup de main qu'il m'ajoute dans ses contacts sur msn on sera plus efficace que par des conversations par mail !!!
merci de votre attention A+ ...
ps mon adresse >>> crimo25@hotmail.fr
A priori, il te suffit d'ouvrir ton port 8000 dans la config de la freebox, de le pointer vers ton serveur, et d'ouvrir son propre port 8000.
Après, faire ça sur un windows... je garanti pas que ce soit une excellente idée!
Starting icecast2: Starting icecast2
Detaching from the console
Could not create listener socket on port 8000
Server startup failed. Exiting
icecast2.
Je ne vois pas ce qui cloche
Moi non plus, mais a la lecture de google, il y a pas mal de pistes.
Et puis, merci de dire bonjour... ce n'est pas le fast-food, ici..
Salut ! Est-il possible de diffuser la sortie de la carte son vers Icecast ?
Par exemple, tous les sons qui passent par la sortie audio (sons systèmes, sons des vidéos, etc...) seraient redirigés vers le réseau.
Je sais que c'est faisable sous Windows, en utilisant la sortie "What U Hear" dans un plugin Shoutcast pour Winamp.
Merci pour ta réponse ;)
@++
Bonjour, j'ai un souci, j'ai suivi le tuto mais je n'arrive pas a difuser sur MPC et a rediriger le plux sur icecast2, l'interface phpmp2 est "vide", c'est a dire que je ne vois aucune playlist, aucun repertoire et encoire moins des morceaux de musiques, si vous pouviez l'aider ca serais super sympa
Bonsoir, ou plutot bonjour,
Apres quelques heures de recherche, j'ai reussis a parvenir a un debut de solution, via phpmp2 je vois les differents dossier, et musiques etc...
Mais le souci viens au moment de lancer les musique via l'interface phpmp2, je fais play, je vois le playing, mais ca reste a zero et quand je fais un refresh et bien ca me met stopped....
:( Je suis un peu perdu la
Si qqun peux m'aider, j'apprecierais fortement, bonne nuit ou bonne journee, ca depend quand vous le lirez^^
Bonjour,
Apres une nuit acharnée j'ai enfin résolu mon problème, il ne faut pas faire comme moi et oublier de modifier le mot de passe de MPD quand on le modifie sous Icecast2...^^
A+ tous le monde
Super tuto merci !!
il me reste plus qu'à aller chez tatie georgette pour tester tout ça !!
sinon comme alternative qui à l'air bien, j'essaie en ce moment d'installer ampache...
a+
Salut,
Juste pour dire que ça marche nickel chez moi
(tout est en local pour le moment, mais ça va pas durer)
Merci pour tout !
""l'interface phpmp2 est "vide", c'est a dire que je ne vois aucune playlist, ""
phpmp2 n'est qu"un client de mpd, soit mpd n'est pas en route, soit mpd est mal config, pas de repertoire "music" avec des fichiers dedans ou alors la db n'est pas creer, pour creer la db
mpd --create-db (attention ecrase la db existante)
dans tout les cas web client ou client graphique il faut que mpd fonctionne et sois parfaitement config
ici quasi tout ce qui peut exister en client et autres pour mpd
http://mpd.wikia.com/wiki/Clients
Config allégé de mpd.conf :
################################################################
user "user" # utilisateur de mpd doit avoir droits d'ecriture sur db, log etc
bind_to_address "localhost"
port "6600"
password "mot de pass@read,add,control,admin" # mot de pass pour le client
audio_output {
type "alsa" name "My ALSA Device" device "hw:0,0" # optional format "44100:16:2" # 16:2 pour son stereo 16:1 pour son monooptions "dev=default"
}
audio_output {
type "shout" name "Nom de ma radio" host "localhost" port "8000" mount "/mpd.ogg" password "mot de pass" # meme mot de pass que icecastbitrate "48" format "44100:16:2" public "yes" # yes si vous voulez que votre radio soit referencé sur [http://dir.xiph.org/]user "source" description "Description de ma radio" genre "Rock,Rap,French,Pop,Blues,Various"} # end of audio_output
filesystem_charset "UTF-8" # charset du system
id3v1_encoding "UTF-8" #charset des tags de vos fichiers
Bonjour,
Un petit mot sur votre blog (découvert suite à une recherche sur les webradios) pour vous annoncer la mise en ligne du nouveau site RCM (radio locale de l'est) et vous inviter à passer faire un petit tour pour écouter le flux (www.rcmlaradio.fr).
Cordialement,