Pour ajouter un flux MP3 à une radio Icecast, configurez un client source comme BUTT ou Liquidsoap. Indiquez l’adresse du serveur, son port, le mot de passe source et un mountpoint distinct, par exemple /radio.mp3. Icecast distribuera ensuite ce flux aux auditeurs.
Icecast peut diffuser plusieurs flux audio depuis un même serveur. Une radio peut ainsi proposer un flux MP3 très compatible, un flux Opus plus efficace et éventuellement un ancien flux Ogg Vorbis.
Icecast ne produit toutefois pas lui-même le son. Un client source doit lire, capturer ou convertir l’audio, l’encoder en MP3, puis l’envoyer au serveur.
La configuration repose donc sur trois éléments :
- le serveur Icecast ;
- le client source ou encodeur ;
- le mountpoint sur lequel le flux sera publié.
Comment fonctionne une radio Icecast ?
Icecast se place entre la source audio et les auditeurs.
Le parcours ressemble à ceci :
Microphone, table de mixage ou playlist
↓
Client source / encodeur
↓
Serveur Icecast
↓
Navigateurs et lecteurs audio
Le client source établit une connexion authentifiée vers Icecast. Il envoie ensuite continuellement les données audio encodées.
Les auditeurs ne se connectent pas au logiciel du studio. Ils ouvrent une URL servie par Icecast :
https://radio.example.com/radio.mp3Langage du code : JavaScript (javascript)
Cette architecture permet de placer Icecast sur un serveur disposant d’une bonne connexion, tandis que l’encodeur fonctionne au studio ou sur une autre machine.
Qu’est-ce qu’un mountpoint Icecast ?
Un mountpoint est le chemin unique qui identifie un flux sur le serveur.
Exemples :
/radio.mp3
/radio.opus
/radio.ogg
/live.mp3
/mobile.mp3
Chaque mountpoint peut diffuser :
- un programme différent ;
- le même programme dans un autre codec ;
- le même programme avec un autre débit ;
- un flux principal ou de secours.
Par exemple :
| Mountpoint | Format | Usage |
|---|---|---|
/radio.mp3 | MP3 à 128 kbit/s | Compatibilité maximale |
/radio-mobile.mp3 | MP3 à 64 kbit/s | Connexions mobiles limitées |
/radio.opus | Opus à 64 ou 96 kbit/s | Meilleure efficacité |
/live.mp3 | MP3 en direct | Émission ou événement ponctuel |
Un mountpoint doit commencer par une barre oblique. Évitez les espaces, les accents et les caractères spéciaux.
Je recommande d’ajouter une extension cohérente avec le format, même si certains anciens documents Icecast indiquent que les flux MP3 peuvent s’en passer :
/radio.mp3
Cette convention aide les navigateurs, les lecteurs et les administrateurs à identifier immédiatement le codec.
MP3, Opus ou Ogg Vorbis : quel format choisir ?
MP3 reste le choix le plus compatible. Il fonctionne avec la majorité des navigateurs, lecteurs audio, autoradios, téléviseurs connectés et applications de radio.
Opus offre généralement une meilleure qualité à débit égal, surtout pour la voix et les faibles débits. Toutefois, certains équipements anciens ne le prennent pas en charge.
Ogg Vorbis reste exploitable, mais Opus l’a largement remplacé pour les nouveaux projets.
| Format | Avantages | Limites |
|---|---|---|
| MP3 | Compatibilité presque universelle | Moins efficace aux faibles débits |
| Opus | Excellente qualité, faible débit, faible latence | Compatibilité moindre avec les anciens appareils |
| Ogg Vorbis | Format ouvert et bien établi | Moins pertinent qu’Opus pour un nouveau flux |
| AAC | Bonne qualité aux débits modérés | Encodage et compatibilité variables selon les outils |
Pour une radio grand public, le duo suivant fonctionne bien :
- un flux MP3 à 128 kbit/s pour la compatibilité ;
- un flux Opus à 64 ou 96 kbit/s pour l’efficacité.
Quelle méthode utiliser pour ajouter le flux MP3 ?
| Besoin | Outil recommandé |
|---|---|
| Diffuser un microphone ou une table de mixage | BUTT |
| Diffuser depuis Windows, macOS ou Linux | BUTT ou Mixxx |
| Automatiser une playlist permanente | Liquidsoap |
| Convertir un flux Ogg ou Opus existant en MP3 | Liquidsoap |
| Produire plusieurs débits simultanément | Liquidsoap |
| Gérer jingles, secours et programmation horaire | Liquidsoap |
BUTT convient mieux à un direct simple. Liquidsoap demande davantage de configuration, mais devient vite indispensable pour une radio automatisée.
Informations nécessaires avant de commencer
Le client source doit connaître plusieurs informations fournies par la configuration Icecast.
- Serveur : nom DNS ou adresse IP d’Icecast ;
- Port : souvent
8000en accès direct ; - Utilisateur source : généralement
source; - Mot de passe source : défini dans
icecast.xml; - Mountpoint : par exemple
/radio.mp3; - Codec : MP3 ;
- Débit : par exemple 128 kbit/s ;
- Canaux : mono ou stéréo ;
- Fréquence : généralement 44,1 ou 48 kHz.
Dans la configuration globale d’Icecast, le mot de passe source se trouve normalement dans la section d’authentification :
<authentication>
<source-password>REMPLACEZ_CE_MOT_DE_PASSE</source-password>
<relay-user>relay</relay-user>
<relay-password>AUTRE_MOT_DE_PASSE</relay-password>
<admin-user>admin</admin-user>
<admin-password>MOT_DE_PASSE_ADMIN</admin-password>
</authentication>Langage du code : HTML, XML (xml)
N’utilisez jamais les valeurs d’exemple comme hackme sur un serveur accessible depuis Internet.
Méthode 1 : ajouter un flux MP3 avec BUTT
BUTT signifie Broadcast Using This Tool. Ce client source libre fonctionne sous Windows, macOS et Linux.
Il peut capturer :
- un microphone ;
- une entrée ligne ;
- une table de mixage USB ;
- une interface audio ;
- la sortie d’un logiciel de mixage, selon le routage audio du système.
1. Installer BUTT
Téléchargez BUTT depuis son site officiel, puis installez la version adaptée à votre système.
Évitez les anciens dépôts de logiciels qui proposent des versions modifiées, accompagnées d’installateurs ou simplement fossilisées depuis dix ans.
2. Ajouter le serveur Icecast
- Ouvrez les réglages de BUTT.
- Ajoutez une nouvelle configuration de serveur.
- Choisissez le type Icecast.
- Saisissez le nom d’hôte du serveur.
- Indiquez le port Icecast.
- Saisissez le mot de passe source.
- Choisissez le mountpoint
/radio.mp3. - Conservez l’utilisateur
source, sauf configuration particulière.
Exemple :
Type : Icecast
Serveur : radio.example.com
Port : 8000
Utilisateur : source
Mot de passe : MOT_DE_PASSE_SOURCE
Mountpoint : /radio.mp3
Si Icecast passe derrière un reverse proxy HTTPS, le port public peut être 443. La connexion du client source dépend alors de la configuration du proxy et de la prise en charge TLS du client.
3. Configurer l’encodage MP3
Choisissez MP3 comme codec.
Pour une radio musicale généraliste :
Codec : MP3
Débit : 128 kbit/s
Fréquence : 44 100 Hz ou 48 000 Hz
Canaux : stéréo
Pour une radio principalement parlée :
Codec : MP3
Débit : 48 à 64 kbit/s
Fréquence : 44 100 Hz
Canaux : mono
Pour un flux musical de meilleure qualité :
Codec : MP3
Débit : 192 kbit/s
Fréquence : 44 100 Hz
Canaux : stéréo
Augmenter le débit augmente directement la bande passante nécessaire pour chaque auditeur.
4. Sélectionner l’entrée audio
Dans les réglages audio, sélectionnez l’entrée réellement utilisée :
- microphone USB ;
- interface audio ;
- entrée ligne ;
- sortie virtuelle d’un logiciel ;
- table de mixage.
Vérifiez le niveau avant d’émettre. Un signal trop faible oblige l’auditeur à monter le volume. Un signal saturé restera désagréable, même avec un débit de 320 kbit/s et beaucoup d’optimisme.
5. Ajouter les informations de la radio
Renseignez les métadonnées du flux :
- nom de la radio ;
- description ;
- genre ;
- adresse du site ;
- statut public ou privé.
Ces informations apparaissent dans la page d’état Icecast et peuvent être transmises aux annuaires lorsque la publication est activée.
6. Démarrer la diffusion
Enregistrez les réglages, puis cliquez sur le bouton de connexion de BUTT.
Le journal doit indiquer une connexion réussie au serveur.
Ouvrez ensuite :
https://radio.example.com/radio.mp3Langage du code : JavaScript (javascript)
Testez également le flux avec VLC :
vlc https://radio.example.com/radio.mp3Langage du code : JavaScript (javascript)
Méthode 2 : ajouter un flux MP3 avec Liquidsoap
Liquidsoap permet de créer une radio automatisée, de lire une playlist, d’ajouter des jingles, de gérer un direct prioritaire et d’envoyer plusieurs formats vers Icecast.
Il convient également pour ajouter un flux MP3 à une radio qui diffuse déjà en Ogg Vorbis ou en Opus.
Installer Liquidsoap
Sur une distribution Linux, utilisez de préférence les paquets adaptés à votre système ou les instructions officielles de Liquidsoap.
Vérifiez ensuite que l’encodeur MP3 est disponible :
liquidsoap --build-config
La prise en charge MP3 dépend généralement de la présence de la bibliothèque LAME dans la construction de Liquidsoap.
Créer une playlist
Créez un fichier contenant un chemin audio par ligne :
/srv/radio/music/morceau-01.flac
/srv/radio/music/morceau-02.mp3
/srv/radio/music/morceau-03.ogg
Enregistrez-le par exemple sous :
/srv/radio/playlists/radio.m3u
Créer un premier script Liquidsoap
Créez le fichier :
/etc/liquidsoap/radio.liq
Ajoutez cette configuration :
#!/usr/bin/liquidsoap
settings.log.stdout.set(true)
music = playlist(
"/srv/radio/playlists/radio.m3u"
)
radio = mksafe(music)
output.icecast(
%mp3(
bitrate = 128,
samplerate = 44100,
stereo = true
),
host = "127.0.0.1",
port = 8000,
user = "source",
password = "MOT_DE_PASSE_SOURCE",
mount = "/radio.mp3",
name = "Ma radio",
description = "Flux MP3 de ma radio",
genre = "Various",
url = "https://www.example.com/",
public = false,
radio
)Langage du code : PHP (php)
Le script :
- charge la playlist ;
- sécurise la source avec
mksafe(); - encode le son en MP3 à 128 kbit/s ;
- se connecte à Icecast en local ;
- publie le flux sur
/radio.mp3.
Adaptez l’hôte si Liquidsoap et Icecast fonctionnent sur des serveurs différents.
Tester la syntaxe
Avant de lancer le flux, vérifiez le script :
liquidsoap --check /etc/liquidsoap/radio.liq
Puis exécutez-le au premier plan :
liquidsoap /etc/liquidsoap/radio.liq
Le journal doit indiquer que le mountpoint est connecté.
Ajouter le MP3 à un flux existant sans relire la playlist
Si Liquidsoap produit déjà un flux Ogg ou Opus, réutilisez la même source audio et ajoutez simplement une seconde sortie.
Exemple :
#!/usr/bin/liquidsoap
music = playlist("/srv/radio/playlists/radio.m3u")
radio = mksafe(music)
output.icecast(
%opus(
bitrate = 96,
samplerate = 48000,
stereo = true
),
host = "127.0.0.1",
port = 8000,
password = "MOT_DE_PASSE_SOURCE",
mount = "/radio.opus",
name = "Ma radio — Opus",
radio
)
output.icecast(
%mp3(
bitrate = 128,
samplerate = 44100,
stereo = true
),
host = "127.0.0.1",
port = 8000,
password = "MOT_DE_PASSE_SOURCE",
mount = "/radio.mp3",
name = "Ma radio — MP3",
radio
)Langage du code : JavaScript (javascript)
Liquidsoap décode la source une seule fois dans son graphe, puis produit les différentes sorties demandées.
L’encodage de plusieurs formats augmente néanmoins la charge processeur.
Convertir un flux Icecast existant en MP3
Vous pouvez également lire un flux distant ou local, puis le transcoder.
Exemple avec un flux Opus existant :
#!/usr/bin/liquidsoap
source_stream = input.http(
"https://radio.example.com/radio.opus"
)
radio = mksafe(source_stream)
output.icecast(
%mp3(
bitrate = 128,
samplerate = 44100,
stereo = true
),
host = "127.0.0.1",
port = 8000,
password = "MOT_DE_PASSE_SOURCE",
mount = "/radio.mp3",
name = "Ma radio — MP3",
radio
)Langage du code : JavaScript (javascript)
Cette méthode est simple, mais elle ajoute :
- une étape de décodage ;
- une nouvelle compression avec perte ;
- de la latence ;
- une dépendance au flux d’origine.
Lorsque cela est possible, produisez les différents formats depuis la source audio non compressée ou depuis le même graphe Liquidsoap.
Configurer le mountpoint dans icecast.xml
Icecast n’exige pas de déclarer chaque mountpoint à l’avance. Un client source peut généralement créer son mountpoint en se connectant.
Une section dédiée devient utile pour définir :
- un mot de passe propre au flux ;
- une limite d’auditeurs ;
- un flux de secours ;
- les métadonnées publiques ;
- des en-têtes HTTP ;
- la publication dans les annuaires.
Exemple minimal :
<mount type="normal">
<mount-name>/radio.mp3</mount-name>
<username>source</username>
<password>MOT_DE_PASSE_MP3</password>
<stream-name>Ma radio — MP3</stream-name>
<stream-description>Flux MP3 principal</stream-description>
<stream-url>https://www.example.com/</stream-url>
<genre>Various</genre>
<bitrate>128</bitrate>
<public>0</public>
</mount>Langage du code : HTML, XML (xml)
Le mot de passe défini dans le mountpoint remplace alors le mot de passe source global pour ce flux.
Adaptez la configuration du client source :
Utilisateur : source
Mot de passe : MOT_DE_PASSE_MP3
Mountpoint : /radio.mp3
Ajouter un flux de secours
Sans source connectée, un mountpoint Icecast disparaît normalement et les auditeurs sont déconnectés.
Un fallback permet de déplacer les auditeurs vers un autre mountpoint lorsque le flux principal s’arrête.
<mount type="normal">
<mount-name>/radio.mp3</mount-name>
<fallback-mount>/secours.mp3</fallback-mount>
<fallback-override>1</fallback-override>
</mount>Langage du code : HTML, XML (xml)
Le flux de secours doit utiliser un format compatible avec le flux principal. Évitez de basculer directement des auditeurs MP3 vers un mountpoint Opus.
Ajouter un direct prioritaire dans Liquidsoap
Liquidsoap peut diffuser une playlist en permanence, puis basculer vers un direct lorsque l’animateur se connecte.
Exemple simplifié :
#!/usr/bin/liquidsoap
settings.harbor.bind_addrs.set(["127.0.0.1"])
music = playlist("/srv/radio/playlists/radio.m3u")
emergency = single("/srv/radio/audio/secours.mp3")
live = input.harbor(
"live",
port = 8080,
password = "MOT_DE_PASSE_DIRECT"
)
radio = fallback(
track_sensitive = false,Langage du code : JavaScript (javascript)
[live, music, emergency]
) output.icecast( %mp3(bitrate = 128), host = « 127.0.0.1 », port = 8000, password = « MOT_DE_PASSE_SOURCE », mount = « /radio.mp3 », radio )
L’ordre du fallback donne la priorité au direct, puis à la playlist, puis au fichier de secours.
Dans cet exemple, le port Harbor écoute uniquement sur 127.0.0.1. Pour recevoir un direct depuis une autre machine, utilisez une architecture sécurisée : VPN, tunnel SSH, reverse proxy adapté ou restriction stricte du pare-feu.
Créer un service systemd pour Liquidsoap
Une radio automatisée doit redémarrer après un reboot ou un plantage.
Créez un service :
sudo nano /etc/systemd/system/radio-liquidsoap.service
Ajoutez :
[Unit]
Description=Flux MP3 Liquidsoap
After=network-online.target icecast2.service
Wants=network-online.target
[Service]
Type=simple
User=liquidsoap
Group=liquidsoap
ExecStart=/usr/bin/liquidsoap /etc/liquidsoap/radio.liq
Restart=on-failure
RestartSec=5
NoNewPrivileges=true
PrivateTmp=true
[Install]
WantedBy=multi-user.targetLangage du code : JavaScript (javascript)
Rechargez systemd :
sudo systemctl daemon-reload
Activez puis démarrez le service :
sudo systemctl enable --now radio-liquidsoap.serviceLangage du code : CSS (css)
Consultez son état :
systemctl status radio-liquidsoap.serviceLangage du code : CSS (css)
Et ses journaux :
journalctl -u radio-liquidsoap.service -fLangage du code : CSS (css)
Le compte liquidsoap doit pouvoir lire les playlists, les morceaux et le fichier de secours.
Tester le flux MP3
Ne vous contentez pas de voir le mountpoint dans l’administration Icecast. Testez le flux comme un véritable auditeur.
Avec curl
curl -I https://radio.example.com/radio.mp3Langage du code : JavaScript (javascript)
Vous devez obtenir une réponse réussie et un type de contenu correspondant au flux audio.
Un flux continu ne se comporte pas toujours comme une page Web classique. Pour éviter de télécharger indéfiniment le contenu :
curl --max-time 5 -v https://radio.example.com/radio.mp3 -o /dev/nullLangage du code : JavaScript (javascript)
Avec ffprobe
ffprobe https://radio.example.com/radio.mp3Langage du code : JavaScript (javascript)
La sortie doit indiquer le codec MP3, le débit approximatif, la fréquence d’échantillonnage et le nombre de canaux.
Avec VLC
- Ouvrez VLC.
- Sélectionnez Ouvrir un flux réseau.
- Collez l’URL du mountpoint.
- Lancez la lecture.
Testez également depuis un téléphone utilisant une autre connexion. Ce contrôle révèle les problèmes de DNS, de pare-feu ou de reverse proxy masqués par le réseau local.
Intégrer le flux MP3 dans une page Web
Le lecteur HTML5 natif suffit pour une intégration simple.
<audio controls preload="none">
<source
src="https://radio.example.com/radio.mp3"
type="audio/mpeg"
>
Votre navigateur ne prend pas en charge la lecture audio.
</audio>Langage du code : HTML, XML (xml)
L’attribut preload="none" évite que chaque visiteur commence à télécharger le flux avant d’avoir cliqué sur lecture.
Pour proposer plusieurs formats :
<audio controls preload="none">
<source
src="https://radio.example.com/radio.opus"
type="audio/ogg; codecs=opus"
>
<source
src="https://radio.example.com/radio.mp3"
type="audio/mpeg"
>
Votre navigateur ne prend pas en charge la lecture audio.
</audio>Langage du code : HTML, XML (xml)
Le navigateur choisira normalement la première source qu’il sait lire.
Faut-il encore proposer un fichier M3U ?
Un fichier M3U reste utile pour ouvrir le flux dans un lecteur externe.
Icecast peut générer une playlist en ajoutant .m3u à l’URL du mountpoint :
https://radio.example.com/radio.mp3.m3uLangage du code : JavaScript (javascript)
Le fichier contient alors l’URL du flux. L’extension M3U ne signifie pas que le contenu audio est nécessairement au format MP3 : elle décrit une playlist.
Pour une page Web moderne, utilisez le lecteur HTML5. Conservez le lien M3U comme option destinée à VLC, foobar2000 ou d’autres lecteurs externes.
Calculer la bande passante nécessaire
Le débit du flux est envoyé séparément à chaque auditeur.
La formule simplifiée est :
bande passante = débit du flux × nombre d’auditeurs
Exemple avec un flux MP3 à 128 kbit/s et 100 auditeurs :
128 kbit/s × 100 = 12 800 kbit/s
Soit environ 12,8 Mbit/s avant d’ajouter les surcharges réseau et une marge de sécurité.
| Auditeurs | MP3 64 kbit/s | MP3 128 kbit/s | MP3 192 kbit/s |
|---|---|---|---|
| 10 | 0,64 Mbit/s | 1,28 Mbit/s | 1,92 Mbit/s |
| 50 | 3,2 Mbit/s | 6,4 Mbit/s | 9,6 Mbit/s |
| 100 | 6,4 Mbit/s | 12,8 Mbit/s | 19,2 Mbit/s |
| 500 | 32 Mbit/s | 64 Mbit/s | 96 Mbit/s |
Prévoyez également :
- la bande passante entre l’encodeur et Icecast ;
- les connexions simultanées ;
- les éventuels relays ;
- le trafic du site Web ;
- une marge pour les pics.
Sécuriser la connexion entre la source et Icecast
Le mot de passe source autorise la publication d’un flux. Une personne qui le récupère peut donc se connecter au serveur et occuper un mountpoint.
- Utilisez un mot de passe long et unique.
- Définissez un mot de passe différent par mountpoint lorsque nécessaire.
- Ne publiez jamais le fichier
icecast.xml. - Limitez l’accès au port source avec un pare-feu ou un VPN.
- Utilisez TLS lorsque le client source et l’architecture le permettent.
- Ne confondez pas le mot de passe source et le mot de passe administrateur.
- Renouvelez les identifiants après le départ d’un animateur.
Lorsque Liquidsoap et Icecast fonctionnent sur le même serveur, connectez Liquidsoap à 127.0.0.1. Le port source n’a alors pas besoin d’être exposé publiquement pour cette utilisation.
Diffuser Icecast en HTTPS
Une page HTTPS qui charge un flux HTTP peut provoquer un blocage de contenu mixte dans le navigateur.
Servez donc le flux en HTTPS lorsque le lecteur est intégré à un site sécurisé.
Deux architectures sont courantes :
- TLS configuré directement dans Icecast ;
- Icecast placé derrière Nginx, HAProxy ou un autre reverse proxy.
Avec un reverse proxy, veillez à désactiver la mise en mémoire tampon du flux et à conserver les connexions longues.
Exemple Nginx simplifié :
location /radio.mp3 {
proxy_pass http://127.0.0.1:8000/radio.mp3;
proxy_http_version 1.1;
proxy_buffering off;
proxy_request_buffering off;
proxy_read_timeout 1h;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}Langage du code : PHP (php)
Adaptez ce bloc à l’ensemble de vos mountpoints et à votre configuration Icecast.
Publier la radio dans un annuaire
Icecast peut publier les informations d’un flux dans un annuaire YP compatible.
Pour qu’un flux puisse apparaître publiquement :
- le serveur doit être configuré pour communiquer avec l’annuaire ;
- le mountpoint doit être marqué comme public ;
- le nom, la description, le genre et l’URL doivent être renseignés ;
- le flux doit être actif ;
- l’annuaire doit accepter la soumission.
Dans le mountpoint :
<public>1</public>Langage du code : HTML, XML (xml)
Ne rendez pas automatiquement public un flux de test, une radio privée ou un flux réservé à une organisation.
Résoudre les erreurs fréquentes
Authentication failed
Vérifiez :
- le mot de passe source ;
- le mot de passe propre au mountpoint ;
- le nom d’utilisateur, généralement
source; - les espaces copiés avant ou après le mot de passe ;
- la configuration réellement chargée par Icecast.
Après une modification :
sudo systemctl reload icecast2
Si le rechargement ne prend pas en charge la modification concernée, redémarrez le service :
sudo systemctl restart icecast2
Mountpoint in use
Un seul client source peut normalement occuper un mountpoint donné.
Déconnectez l’ancien encodeur ou utilisez un autre mountpoint :
/radio-test.mp3
Le mountpoint apparaît, mais aucun son ne sort
Vérifiez :
- l’entrée audio sélectionnée ;
- le niveau du signal ;
- le périphérique muet ;
- la lecture effective de la playlist ;
- les formats décodables par Liquidsoap ;
- les journaux de l’encodeur.
Le navigateur refuse le flux
Contrôlez :
- le protocole HTTPS ;
- le type MIME
audio/mpeg; - le certificat TLS ;
- le reverse proxy ;
- les en-têtes CORS lorsqu’un lecteur JavaScript en a besoin ;
- l’absence de contenu mixte.
Le son coupe régulièrement
Les coupures peuvent provenir :
- d’une connexion montante instable au studio ;
- d’un débit trop élevé ;
- d’une charge processeur excessive ;
- d’un buffer trop faible ;
- d’un reverse proxy mal configuré ;
- d’un manque de bande passante côté serveur ;
- d’un fichier audio illisible dans la playlist.
Testez d’abord un flux MP3 à 128 kbit/s, puis réduisez temporairement le débit afin d’isoler la cause.
Liquidsoap indique Unsupported encoder
La construction de Liquidsoap ne possède pas la bibliothèque nécessaire à l’encodeur demandé.
Vérifiez les fonctions disponibles :
liquidsoap --build-config
Installez ensuite une version comprenant l’encodeur MP3 ou les dépendances LAME nécessaires.
Consulter les journaux Icecast
Les journaux fournissent souvent une réponse plus utile qu’une nouvelle réinstallation au hasard.
Avec systemd :
journalctl -u icecast2 -f
Selon la distribution, consultez aussi :
/var/log/icecast2/error.log
/var/log/icecast2/access.logLangage du code : JavaScript (javascript)
Recherchez notamment :
- les échecs d’authentification ;
- les mountpoints déjà occupés ;
- les déconnexions de source ;
- les erreurs TLS ;
- les limites de clients ;
- les problèmes de configuration XML.
Checklist avant la mise en production
- Le mountpoint MP3 possède un nom simple et explicite.
- Le mot de passe source n’utilise pas la valeur par défaut.
- Le flux utilise le bon codec et le bon débit.
- Le niveau audio ne sature pas.
- Les métadonnées de la radio sont renseignées.
- Le flux fonctionne avec VLC et un navigateur.
- Le flux est accessible en HTTPS.
- Le lecteur HTML5 utilise
preload="none". - Le reverse proxy ne met pas le flux en tampon.
- La bande passante disponible couvre le nombre d’auditeurs prévu.
- Liquidsoap redémarre automatiquement avec systemd.
- Un fichier ou flux de secours est disponible.
- Les journaux Icecast et Liquidsoap sont surveillés.
- Les ports d’administration ne sont pas exposés inutilement.
- Les droits de diffusion des contenus sont respectés.
Retour sur Oddcast et Winamp
La première version de ce tutoriel utilisait Winamp, le plugin Oddcast DSP et une bibliothèque LAME installée manuellement.
Cette combinaison permettait d’ajouter un flux MP3 à côté d’un flux Ogg Vorbis. Elle demandait toutefois de copier une DLL dans le bon répertoire, de configurer plusieurs encodeurs et de conserver Winamp ouvert en permanence.
Les nombreux commentaires de l’article évoquaient principalement :
- la DLL LAME introuvable ;
- les flux M3U mal compris ;
- les mountpoints incorrects ;
- les annuaires Yellow Pages ;
- la diffusion simultanée en MP3, Ogg et AAC+.
BUTT remplace avantageusement cette configuration pour un direct simple. Liquidsoap convient mieux lorsqu’il faut automatiser ou produire plusieurs sorties.
Questions fréquentes
Icecast encode-t-il lui-même le son en MP3 ?
Non. Icecast reçoit et redistribue un flux déjà encodé. BUTT, Liquidsoap, Mixxx ou un autre client source doit produire le flux MP3.
Puis-je diffuser simultanément en MP3 et en Opus ?
Oui. Utilisez deux mountpoints distincts, par exemple /radio.mp3 et /radio.opus. Liquidsoap peut générer les deux sorties depuis la même source.
Quel débit MP3 choisir pour une radio ?
128 kbit/s stéréo offre un bon compromis pour la musique. Une radio parlée peut utiliser 48 à 64 kbit/s en mono. Un flux musical haut de gamme peut monter à 192 kbit/s, au prix d’une consommation de bande passante supérieure.
Dois-je déclarer le mountpoint dans icecast.xml ?
Pas obligatoirement. Le client source peut créer le mountpoint en se connectant. Déclarez-le lorsque vous avez besoin de réglages spécifiques, comme un mot de passe distinct, un fallback ou une limite d’auditeurs.
Pourquoi le flux MP3 ne fonctionne-t-il pas sur une page HTTPS ?
Le navigateur peut bloquer un flux HTTP intégré dans une page HTTPS. Servez le mountpoint en HTTPS directement ou placez Icecast derrière un reverse proxy TLS correctement configuré.
Le fichier radio.mp3.m3u contient-il le flux audio ?
Non. Le fichier M3U est une petite playlist qui contient l’adresse du flux. Le lecteur ouvre ensuite cette adresse pour recevoir l’audio en continu.
Puis-je utiliser le même mot de passe pour tous les flux ?
Oui, avec le mot de passe source global. Toutefois, des mots de passe propres à chaque mountpoint facilitent la révocation des accès et limitent les conséquences d’une fuite.
Conclusion
Ajouter un flux MP3 à Icecast ne demande plus Winamp, Oddcast ni une DLL LAME copiée à la main.
Pour un direct, configurez BUTT avec l’adresse du serveur, le mot de passe source et un mountpoint comme /radio.mp3. Pour une radio automatisée ou plusieurs formats, utilisez Liquidsoap.
Testez ensuite le flux depuis l’extérieur, servez-le en HTTPS et surveillez la bande passante. Icecast se chargera de distribuer le son ; il ne peut malheureusement pas améliorer la playlist.
Sources
- Icecast : site officiel et versions actuelles
- Icecast : référence du fichier de configuration
- Icecast : configuration de base et mountpoints
- Icecast : clients sources compatibles
- Liquidsoap : guide de démarrage
- Liquidsoap : exemples de transcodage et de diffusion
- Liquidsoap : formats et encodeurs audio
