Sommaire
  1. Préambule
  2. Icecast
    1. Installation
    2. Configuration
  3. MPD
    1. Installation
    2. Configuration
  4. Controler votre liste de lecture à distance, et les clients MPD

  1. Préambule :
    • Ce système de diffusion fonctionne sur le mode client-serveur, sur trois niveaux.
      1. MPD s'occupera de gérer votre collection de fichiers audio : grâce à l'arborescence des répertoires d'un côté et aux tags de vos fichiers (quelqu'en soit le format : FLAC, Vorbis, AAC, MP3, etc) de l'autre. Il se chargera ensuite de renvoyer le flux audio vers la sortie de votre choix. Il peut très bien s'agir tout simplement de vos enceintes par l'intermédiaire d'ALSA ou d'OSS, ou vers des sorties un peu plus exotiques telles que JACK ou Icecast. Comme vous le devinez certainement, c'est ce dernier qui nous intéresse.
      2. Icecast quand à lui, se chargera de redistribuer au format Vorbis le flux audio qui lui est envoyé par MPD (entre autres possibilités) sur internet grâce au protocole HTTP, rendant ainsi l'écoute accessible à tous les membres du réseau sur leur lecteur multimédia favori.
      3. MPD sera lui-même piloté par l'utilisateur par l'intermédiaire d'un client. Ceux-ci sont nombreux, et peuvent aussi bien être en ligne de commande que graphiques, et disponibles sur une grande variété de plate-formes. J'en parlerais plus longuement plus bas.
    • Cela signifie concrètement que, si cela est nécessaire, ces trois composants peuvent être sur trois machines différentes… ou sur la même, selon les besoins. Par exemple, je pourrais me connecter sur le serveur MPD qui tourne chez moi à Gap depuis le studio de mon petit frère à Grenoble, MPD se chargeant ensuite d'envoyer le flux audio vers Icecast, sur ce serveur disposant de la bande passante nécessaire pour que plusieurs personnes puisse écouter simultanément mes délires musicaux du moment. Si c'est un serveur doté d'un débit conséquent qui héberge aussi les fichiers audio, il y a en revanche de grandes chances pour que MPD et Icecast soient installés sur la même machine, tandis que MPD continuera à pouvoir être contrôlé à distance d'où que l'on souhaite. À chaque cas il y a sa solution : à vous de voir laquelle sera la plus adaptée.

  2. Icecast :
    1. Installation :
      • Sous Gentoo : Icecast est bien présent dans les dépôts officiels de Gentoo. Passez en root et un simple et habituel emerge icecast suffira donc. N'oubliez cependant pas d'activer les variables USE ogg et vorbis en modifiant votre fichier /etc/make.conf.
        $ su root
        Mot de passe :
        # emerge icecast
      • Sous Debian : Tout comme pour Gentoo, Icecast se trouve dans les dépôts officiels. Passez en root puis tapez simplement aptitude install icecast2. Prenez bien garde à ne pas oublier le « 2 » à la fin du nom du paquet.
        $ su root
        Mot de passe :
        # aptitude install icecast2
        Note : les utilisateurs d'Ubuntu utiliseront plutôt la commande sudo -s pour se connecter en root.
    2. Configuration :
      1. Ouvrez le fichier /etc/icecast2/icecast.xml. Il peut avoir l'air assez touffu, mais il n'y a que peu de choses à modifier. Ouvrez un peu les yeux et cherchez ces lignes-ci :
        <icecast>
        <limits>
        <clients>10</clients>
        Modifiez la valeur clients (ici, 10) en fonction des capacités du débit d'envoi de votre ligne.

        Plus bas :
        <authentication>
        <source-password>source-password</source-password>
        <relay-password>YYYYYYYYYY</relay-password>

        <admin-user>admin-user</admin-user>
        <admin-password>admin-password</admin-password>
        </authentication>
        Modifiez la valeur source-password entre les balises à la valeur de votre choix. Ce mot de passe servira à restreindre l'accès à Icecast aux seuls possesseurs de ce mot de passe, afin qu'il ne serve pas de relais à la création d'un flux audio pour tout un chacun ; vous risqueriez de le retrouver squatté assez vite par le premier venu qui souhaiterais utiliser votre bande passante à son profit. Ce mot de passe sera ensuite utilisé dans la configuration de MPD.
        Modifiez ensuite les valeurs admin-user et admin-password à votre choix une fois encore. Ce nom d'utilisateur et ce mot de passe pourront servir plus tard à administrer Icecast grâce à son interface web.

        Encore plus bas :
        <hostname>hostname</hostname>
        Modifiez aussi la variable hostname.tld entre les balises et indiquez-y le nom de la machine auquel les sources de flux audio se connecteront à Icecast.
      2. Ouvrez ensuite le fichier /etc/default/icecast2. Regardez à la fin du fichier, et modifiez la dernière ligne pour obtenir ENABLE=true. Cette modification permettra à Icecast d'être lancé en tâche de fond, comme démon, et éventuellement par le script init.d (ceci est automatique avec Debian, mais pas avec Gentoo).
      3. Optionnel pour Gentoo : si vous souhaitez qu'Icecast se lance par défaut au lancement de votre machine (ce qui est quand-même très pratique), tapez simplement dans votre console rc-update add icecats default, bien entendu toujours en étant connecté en root.
        # rc-update add icecast default
      4. Assurez-vous qu'Icecast fonctionne correctement pour le moment.
        1. Relancez-le complètement afin d'être certains que les modifications apportées ont été prises en compte.
          # /etc/init.d/icecast stop && /etc/init.d/icecast start
          Note : Pour Debian ou Ubuntu, remplacez icecast par icecast2.
        2. Ouvrez votre navigateur internet favori, et entrez-y l'adresse de la machine sur laquelle vous avez installé Icecast, suivie du port par défaut : 8000. Ainsi, si vous l'avez installé en local, l'adresse à rentrer sera localhost:8000, ou encore 127.0.0.1:8000. Vous devriez voir apparaître une page internet comme ceci : icecast_01.png
        3. Essayez ensuite de vous connecter à l'interface d'administration… en cliquant sur le bouton « Administration » : icecast_02.png icecast_03.png
      5. Tout c'est bien passé et affiché comme prévu ? Très bien. Passez à l'étape suivante : l'installation de MPD.
      6. Note : Il est bien entendu possible de configurer Icecast de manière beaucoup plus pointue, mais je n'en dirais pas plus sur ceci, ce tutorial ayant pour but d'être concis. Si vous souhaitez allez plus loin, le fichier de configuration est clair et abondamment commenté, et aidera beaucoup ceux qui désirent aller plus loin.

  3. MPD :
    1. Installation :
      • Sous Gentoo : Comme précédemment, MPD est présent dans les dépôts officiels de Gentoo. Toujours en root, tapez emerge mpd. N'oubliez pas d'activer la variables icecast afin de vous assurer que le logiciel sera compilé avec la capacité de communiquer avec Icecast, mais aussi celles correspondantes au format de vos fichiers audio (aac, flac, musepack, ogg, vorbis, wavepack, etc.), encore une fois, modifiant le fichier /etc/make.conf si nécessaire.
      • Sous Debian : Encore une fois, MPD est disponible sur les dépôts officiels. toujours pas de prise de tête. En root, tapez aptitude install mpd.
    2. Configuration :
      1. Cette fois-ci, un seul fichier à modifier : /etc/mpd.conf (ou ~/.mpdconf, si vous voulez vous contenter de faire tourner une instance de MPD par utilisateur). En revanche, il y aura de plus nombreuses modifications à y effectuer. Je n'expliquerais toutefois que les modifications les plus indispensables.

        Nous allons nous simplifier la vie par la suite grace à un lien symbolique vers le répertoire contenant votre collection de fichiers audio. Ouvrez votre terminal, puis :
        # rmdir /var/lib/mpd/music && ln -s /home/user/musique /var/lib/mpd/music
        Bien entendu, adaptez /home/user/musique en fonction de l'emplacement de vos fichiers audio.

        Allez ensuite à ces lignes :
        #audio_output {
        # type "shout"
        # encoding "ogg"
        # name "My Shout Stream"
        # host "localhost"
        # port "8000"
        # mount "/mpd.ogg"
        # password "hackme"
        # quality "5.0"
        # bitrate "128"
        # format "44100:16:1"
        # protocol "icecast2"
        # user "source"
        # description "My Stream Description"
        # genre "jazz"
        # public "no"
        # timeout "2"
        #}
        Décommentez (c'est à dire enlevez le caractère « # » au début de la ligne) impérativement la première et la dernière lignes, ainsi que les suivantes que vous remplirez comme indiqué :
        • type : C'est le type de la sortie audio. Du flux externe, c'est ce qui nous intéresse. Laissez tel-quel.
        • encoding : C'est le format de notre sortie sonore. Ogg vorbis est un excellent format lisible par tous les ordinateurs. Laissez tel-quel.
        • host : C'est le nom de la machine sur laquelle Icecast a été précédemment installé (la variable <hostname>). Vous pouvez aussi rentrer ici l'adresse IP de cette machine. localhost Conviendra aussi très bien si MPD et Icecast tournent sur la même machine.
        • port : Le port défini par Icecast pour l'envoi du flux. Par défaut, il est défini sur 8000. Laissez-le tel-quel.
        • mount : C'est le nom de l'emplacement exact de votre futur flux, tel que délivré par Icecast. Rentrer la valeur de votre choix (évitez les espaces et les caractères exotiques). N'oubliez pas le .ogg à la fin ; il n'est pas indispensable mais permet de deviner aisément à la lecture le type de format d'encodage utilisé, et précédemment défini par encoding.
        • password : C'est le mot de passe que vous avez choisi afin de restreindre l'accès à Icecast aux seules personnes autorisées (la variable <source-password>). Rentrez-y de nouveau à cet emplacement.
        • quality ou bitrate : La qualité du flux audio que délivrera Icecast à tous les auditeurs. Attention : plus la qualité est élevée, plus le débit de la connexion doit être important. Si vous vous servez de votre connexion personnelle, mettre la qualité à 2 ou le débit (bitrate) à 32 est en général un choix correct. Il est en général inutile de dépasser une qualité de 5 ou un débit de 128.
        • format : Quelques données techniques sur le flux. Laissez tel-quel si vous souhaitez une sortie en mono, ou bien changez le « 1 » pour un « 2 » à la fin si vous souhaitez délivrer un son en stéréo.
        • protocol : D'autres données techniques sur le flux. Laissez encore tel-quel.
        • user : Laissez tel-quel.
        • description : Décrivez ici en quelques mots le contenu du flux que vous diffusez. Celui-ci sera affiché par le lecteur des auditeurs avec les autres méta-données des titres écoutés.
        • genre : Et ici, le genre…
        Ces deux derniers points en particulier sont optionnels. Vous pouvez ne pas vous en servir, auquel cas, laissez ces lignes commentées.

        Plus bas encore dans le même fichier, cherchez cette ligne :
        bind_to_address                 "localhost"
        Cette fois-ci, commentez-là. Cela servira à autoriser n'importe-quel ordinateur à se connecter à MPD – pour peu qu'il dispose du mot de passe – en écoutant sur toutes les adresses qui appellent la machine sur laquelle il est installé.

        Enfin, cherchez cette ligne-ci :
        password                        "password@read,add,control,admin"
        Choisissez le mot de passe qui vous servira par la suite à contrôler MPD, et mettez le à la place de password, juste avant l'arobase (@).
      2. Optionnel pour Gentoo : Si vous souhaitez que MPD se lance lui aussi automatiquement au lancement de la machine, la procédure est sur le même modèle que pour Icecast : : rc-update add mpd default.
        # rc-update add mpd default
      Voilà, si tout c'est bien passé, MPD est maintenant opérationnel.

  4. Controler votre liste de lecture à distance, et les clients MPD
    • Courte explication : comme indiqué plus haut, les clients MPD servent à piloter ce dernier de manière très souple, que ce soit grâce à l'arborescence des répertoires ou aux méta-données ID3. Avec eux, vous pourrez sélectionner quels morceaux vous souhaitez écouter en les choisissant un par un, par artiste, par album, ou par répertoires complets. Vous pourrez aussi enregistrer vos listes de lecture favorites afin de les recharger par la suite, etc. Il y a aussi moyen d'écouter des webradios et de les rediffuser de la même manière ; l'intérêt est limité, mais la possibilité existe. Bien entendu, tout ceci pouvant se faire « à la volée », sans interrompre le flux audio fourni par Icecast.
      Chacun d'eux aura bien entendu besoin, pour se connecter à Icecast, du mot de passe de MPD, précédemment défini lors de sa configuration. Chacun de ces client se configurant différemment, je vous invite à chercher par vous même comment le faire, plutôt que de l'expliquer pour chacun.
    • Quelques exemples de clients :
      • Sonata : un client simple, élégant et pratique écrit en Python et GTK+. sonata_01.png
      • GMPC : un client très complet (bien qu'à l'interface un peu confuse à mon goût) en GTK+. Il présente le gros avantage de permettre d'ouvrir ou de fermer un des flux audio configuré « à la volée », en deux clics. gmpc_01.png
      • NCMPC : un client avec une interface Ncurses, pour avoir une interface graphique même quand on ne dispose que du terminal. Simple et efficace. ncmpc_01.png
      • MPC : de la « bête et méchante » ligne de dommande, mais toujours aussi efficace pour certaines tâches, et notamment pour être utilisé par des scripts.
        $ MPD_HOST="mpd-password@hostname" MPD_PORT="6600" mpc pause
        Jacques Brel - Orly
        [paused] #21/27 3:12/4:22 (73%)
        volume: 39% repeat: off random: off

  5. Vous devriez maintenant disposez d'un système permettant de gérer parfaitement vos listes de lecture de fichiers audios, et de les diffuser sur internet en quelques clics.
    Si tout c'est bien passé, une fois la lecture lancée, Icecast devrait vous afficher quelque-chose comme ceci : icecast_04.png

Des erreurs ou des lacunes se sont probablement glissées dans ce tutorial. Si ce devait être le cas, n'hésitez pas à m'en faire part dans les commentaires de ce billet afin que je puisse l'améliorer et tenter de vous aider.