Blog

Icecast : Diffuser de la musique en ligne

Feb. 12, 2024

Un tutoriel pour diffuser de la musique en ligne, en bonne qualité et gratuitement ! Pratique notamment pour animer des sessions de JDR à distance. Ce tutoriel s'adresse aux néophytes, tout y est expliqué ! Les étapes sont détaillées pour une installation sur Linux et sur Windows, mais cela fonctionne sensiblement de la même façon sur Mac. Si vous rencontrez des problèmes, n'hésitez pas à [m'écrire](https://chalier.fr/#contact) ! # Introduction L'objectif est de pouvoir diffuser un flux audio quelconque sur internet. Pour cela, nous allons utiliser [Icecast](https://icecast.org/), un serveur de diffusion multimédia libre. Il faut lui fournir un flux audio, qu'il se charge de diffuser aux clients qui se connecteront. Voici un schéma qui reprend ce que nous allons faire : ![](https://drive.chalier.fr/protected/icecast/Untitled-2024-02-03-1315.png) Notamment, le cas d'usage est le suivant : de la musique est jouée sur un smartphone, branché avec un câble jack sur l'entrée micro d'un ordinateur. Le signal de cette entrée micro est convertie en flux audio par le logiciel Butt, et transmis au serveur Icecast qui diffuse alors sur internet. Les clients n'ont plus qu'à se connecter à une adresse donnée, cela fonctionne sur n'importe quel navigateur, sans rien installer, et peuvent régler eux-même le volume. Voici la procédure : 1. [Installer et configurer Icecast](#installeretconfigurericecast) 2. [Installer et configurer le client source (Butt)](#installeretconfigurerleclientsource) 3. [Paramétrer la redirection NAT](#routage) # Installer et configurer Icecast À tout moment, référez-vous à [la documentation d'Icecast](https://icecast.org/docs/icecast-latest) pour en apprendre davantage. ## Installer Icecast **Sur Linux :** Dans un terminal, exécutez la commande suivante : ```console sudo apt install icecast2 ``` Durant l'installation, Icecast demande s'il faut le configurer tout de suite. Ce n'est pas nécessaire, car nous allons le faire nous-même ensuite. Vous pouvez donc répondre « Non ». **Sur Windows :** Rendez-vous sur la page de [téléchargement d'Icecast](https://icecast.org/download/) et choisissez « Icecast for Windows ». Cela télécharge un installeur, que vous pouvez exécuter, pour installer Icecast2 en laissant les paramètres par défaut. ## Configurer Icecast La configuration d'Icecast se fait via un fichier `icecast.xml`. Commencez par créer un nouveau dossier pour l'occasion, puis copiez le gabarit du fichier `icecast.xml` dans ce dossier : - sur **Linux**, le gabarit se trouve dans `/etc/icecast2/icecast.xml`, - sur **Windows**, le gabarit se trouve dans `C:\Program Files (x86)\Icecast\icecast.xml`. Nous allons maintenant pouvoir éditer notre copie de `icecast.xml`. À noter que sur Linux, il sera plus simple d'en changer les permissions (changez `utilisateur` pour votre nom d'utilisateur) : ```console sudo chown utilisateur icecast.xml ``` Ouvrez le fichier `icecast.xml` avec un éditeur de texte (sur Windows, utilisez le *Bloc-notes* ou un éditeur de texte plus avancé comme [Notepad++](https://notepad-plus-plus.org/downloads/)). Nous allons nous contenter de modifier certaines lignes de ce fichier : 1. Modifiez le contenu de la balise `hostname` en inscrivant votre adresse IP publique, que vous pouvez obtenir avec un site comme [What Is My IP Address](https://whatismyipaddress.com/). Attention, cette adresse peut changer avec le temps, vous pourrez vérifier avant chaque lancement. Si vous en disposez d'un, vous pouvez également renseigner un nom de domaine, ce qui sera plus pratique pour vos clients. 2. Modifiez le contenu des balises `` et `` incluses dans la balise ``. La balise `` gère le nombre maximum de clients pouvant se connecter en même temps. Si vous comptez diffuser votre musique à une poignée de personnes, vous pouvez diminuer la valeur par défaut. De même, nous n'allons utiliser qu'une seule source, vous pouvez donc inscrire `1` dans la limite de ``. Ce n'est pas strictement nécessaire, mais c'est une sécurité pour éviter que trop de monde ne se connecte en même temps. 3. C'est l'étape importante : **modifiez tous les mots de passes** dans la balise ``. Cela concerne trois mots de passe, pour les sources (notez-le car nous en auront besoin plus tard), pour les relais (que nous n'utiliserons pas ici, mais il faut tout de même changer le mot de passe) et pour l'administration. Vous pouvez également changer l'identifiant du compte administrateur ici. Etape spéciale pour Windows : plus bas, sous la balise ``, modifier les chemins de ``, `` et `` en chemins absolus. Par exemple, avec le dossier d'installation par défaut, le chamin pour `` est `C:/Program Files (x86)/Icecast/log` au lieu de `./log`. ## Tester Icecast Ouvrez un terminal dans votre dossier contenant le fichier de configuration (ou déplacez-y vous avec la commande `cd`), puis exécutez Icecast en indiquant le chemin vers ce fichier de configuration : **Sur Linux :** ```console icecast2 -c icecast.xml ``` La première fois, une erreur peut survenir, où Icecast manque de permissions pour enregistrer les logs. Pour corriger cela, exécutez la commande suivante : ```console sudo chown -R utilisateur /var/log/icecast2 ``` en changeant `utilisateur` par votre nom d'utilisateur. Puis réessayez de lancer Icecast. **Sur Windows :** ```console C:\Program Files (x86)\Icecast\bin\icecast.exe -c icecast.xml ``` Le serveur se lance. Attendez quelques secondes, puis ouvrez votre navigateur, et rendez-vous à l'adresse [http://localhost:8000](http://localhost:8000). Si tout a bien fonctionné, vous devriez voir la page d'accueil d'Icecast, et pouvoir vous authentifier en tant qu'administrateur en cliquant sur « Administration » et en renseignant l'identifiant `admin` et le mot de passe que vous avez modifié dans le fichier de configuration.
Interface d'administration d'Icecast
Capture d'écran de l'interface d'administration d'Icecast, une fois authentifié en tant qu'administrateur
# Installer et configurer le client source Comme mentionné plus tôt, Icecast ne fait que diffuser un flux à des clients. Notamment, il ne génère pas lui-même le flux. Pour cela, il faut utiliser un autre logiciel, qui enverra son flux au serveur. De nombreux logiciels permettent cela, [Icecast en propose d'ailleurs quelques-uns](https://icecast.org/apps/). Ici, nous allons utiliser [butt](https://danielnoethen.de/butt/), qui a l'avantage de supporter facilement les entrées micro. Pour diffuser de simples fichiers audio dans un dossier en boucle, [liquidsoap](https://www.liquidsoap.info/) fonctionne très bien. ## Installer butt **Sur Linux :** Rendez-vous sur [la page de téléchargement de butt](https://danielnoethen.de/butt/#_download), et choisissez soit *Linux AppImage*. Une fois le fichier téléchargé, avant de l'exécuter, il faut lui donner les permissions d'exécution : ```console cd ~/Téléchargements chmod +x butt*.AppImage ``` **Sur Windows :** Rendez-vous sur [la page de téléchargement de butt](https://danielnoethen.de/butt/#_download), et choisissez soit *Windows Setup* (pour installer butt directement sur l'ordinateur), soit *Windows without installer* pour l'utiliser directement. Si vous avez téléchargé l'installeur, exécutez-le pour installer butt. ## Configurer butt Lancez le logiciel. Cliquez sur « Paramètres ». Sous l'onglet « Principal », dans le groupe « Paramètres du serveur », cliquez sur « Ajout. ». Renseignez les valeurs suivantes : - Nom : `Icecast 2` - Type : `Icecast` - Adresse : `localhost` - Port : `8000` - Mot de passe : le mot de passe source choisi - Point de montage Icecast : `/stream` (valeur par défaut) - Utilisateur : `source` (valeur par défaut) Validez en cliquant sur « Ajouter ». Sous l'onglet « Audio », dans le groupe « Paramètres audio principaux », ouvrez la liste nommée « Primary Audio Device » et sélectionnez la source audio que vous souhaitez diffuser. Lorsque la source est sélectionnée, et qu'elle est active (de la musique est diffusée, le VU-mètre de la fenêtre principale de Butt s'active également. Validez en fermant la fenêtre de paramètres. ## Tester butt Cliquez sur le bouton lecture pour démarrer la diffusion. Dans votre navigateur, rendez-vous sur [http://localhost:8000/stream](http://localhost:8000/stream). Si tout se passe bien, le flux se lance automatiquement, vous devriez entendre simplement un petit décalage.
Interface de Butt
Capture d'écran de Butt en cours d'émission
# Routage Pour le moment, seul les clients sur votre réseau local ont accès au serveur. Pour permettre à des clients extérieurs de se connecter, il faut mettre en place une redirection de port. Petite explication : du point de vue d'internet, seule votre routeur (la box internet) apparaît. Si un client essaye de se connecter à votre adresse IP, il communiquera avec ce routeur, qui ne sachant que faire, ignorera cette communication. Il faut paramétrer le routeur afin qu'il redirige les requêtes d'un certain port vers une machine particulière de votre réseau local. Quand le client enverra sa requête à votre adresse, le routeur la renverra vers votre ordinateur, et donc le serveur Icecast, qui pourra y répondre. Cherchez sur Google « Redirection de ports » suivi du modèle de votre routeur, et suivez les instructions afin de créer la redirection suivante : **redirigez le port 8000 externe vers le port 8000 de votre ordinateur**. Le plus souvent, cela consiste à : 1. ouvrir son navigateur, 2. accéder à l'IP du routeur, (souvent `192.168.0.1`, `192.168.1.1` ou `192.168.1.254`, que l'on peut trouver en cherchant sa [passerelle par défaut](https://duckduckgo.com/?q=D%C3%A9terminer+l'adresse+IP+de+sa+passerelle+par+d%C3%A9faut)), 3. s'authentifier en tant qu'administrateur (le mot de passe est souvent lié à la clé WiFi), 4. accèder au menu « Redirection de ports » ou « Configuration NAT », 5. ajouter une règle de redirection, pour le protocole TCP, avec pour port externe 8000, port interne 8000, et adresse [l'adresse IP locale de votre ordinateur](https://duckduckgo.com/?q=D%C3%A9terminer+son+adresse+IP+locale). Cette redirection faite, un client externe peut se connecter au serveur Icecast en se rendant à l'adresse [http://123.456.7.89:8000/stream](http://123.456.7.89:8000/stream) en changeant `123.456.7.89` pour votre adresse IP publique. Notez qu'Icecast doit être en cours d'exécution, et Butt en cours d'émission pour que cela fonctionne.
Capture d'écran d'un navigateur web affichant un simple lecteur audio HTML
Capture d'écran du point de vue d'un client se connectant au flux
# Résumé de l'utilisation Le paramètrage effectué une première fois, pour relancer la diffusion, il faut : 1. Lancer Icecast 2. Lancer Butt 3. Cliquer sur le bouton lecteur de Butt 4. Lancer la musique sur la source audio En cas de problème, n'oubliez pas de vérifier si votre IP publique a été changée, auquel cas vous pouvez modifier la configuration dans `icecast.xml` et changer le lien pour vos clients. # Paramétrage supplémentaire **Port.** Il est possible de modifier le port par défaut, 8000, par un autre [port](https://fr.wikipedia.org/wiki/Liste_de_ports_logiciels) de votre choix. Pour cela, il suffit de changer la valeur de la balise `` dans la balise `` du fichier `icecast.xml`. Modifiez alors la configuration de Butt avec ce nouveau port, ainsi que la règle de redirection NAT de votre routeur ! **Point de montage.** Par défaut, le flux est accessible à l'adresse finissant en `/stream`. Cela peut être changé en modifiant la valeur du paramètres « Point de montage Icecast » dans les paramètres de Butt. N'oubliez pas de précéder ce nom d'un slash. Cela permet par exemple de personnaliser l'URL du flux, ou de diffuser plusieurs flux en même temps.