Desiderata photo

Desiderata

Go placidly amid the noise and haste,
and remember what peace there may be in silence.
As far as possible without surrender
be on good terms with all persons.

Speak your truth quietly and clearly;
and listen to others,
even the dull and the ignorant;
they too have their story.

Avoid loud and aggressive persons,
they are vexations to the spirit.
If you compare yourself with others,
you may become vain and bitter;
for always there will be greater and lesser persons than yourself.
Enjoy your achievements as well as your plans.

Keep interested in your own career, however humble;
it is a real possession in the changing fortunes of time.
Exercise caution in your business affairs;
for the world is full of trickery.

But let this not blind you to what virtue there is;
many persons strive for high ideals;
and everywhere life is full of heroism.

Be yourself.
Especially, do not feign affection.
Neither be cynical about love;
for in the face of all aridity and disenchantment
it is as perennial as the grass.

Take kindly the counsel of the years,
gracefully surrendering the things of youth.
Nurture strength of spirit to shield you in sudden misfortune.

But do not distress yourself with dark imaginings.
Many fears are born of fatigue and loneliness.
Beyond a wholesome discipline,
be gentle with yourself.

You are a child of the universe,
no less than the trees and the stars;
you have a right to be here.
And whether or not it is clear to you,
no doubt the universe is unfolding as it should.

Therefore be at peace with God,
whatever you conceive Him to be,
and whatever your labors and aspirations,
in the noisy confusion of life keep peace with your soul.

With all its sham, drudgery, and broken dreams,
it is still a beautiful world.
Be cheerful.
Strive to be happy.

Max Ehrmann, Desiderata, 1952.

Une image tirée d'un tutoriel en français montre un écran affichant le tableau de bord d'Icecast, accompagné du texte : « TUTO ICECAST : AJOUTER UN FLUX MP3 À VOTRE RADIO ICECAST ». Une icône de fichier MP3 apparaît à côté, sur un fond bleu foncé orné de graphiques représentant des ondes sonores.

Comment ajouter un flux MP3 à une radio Icecast

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 :

  1. le serveur Icecast ;
  2. le client source ou encodeur ;
  3. 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 :

MountpointFormatUsage
/radio.mp3MP3 à 128 kbit/sCompatibilité maximale
/radio-mobile.mp3MP3 à 64 kbit/sConnexions mobiles limitées
/radio.opusOpus à 64 ou 96 kbit/sMeilleure efficacité
/live.mp3MP3 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.

FormatAvantagesLimites
MP3Compatibilité presque universelleMoins efficace aux faibles débits
OpusExcellente qualité, faible débit, faible latenceCompatibilité moindre avec les anciens appareils
Ogg VorbisFormat ouvert et bien établiMoins pertinent qu’Opus pour un nouveau flux
AACBonne qualité aux débits modérésEncodage 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 ?

BesoinOutil recommandé
Diffuser un microphone ou une table de mixageBUTT
Diffuser depuis Windows, macOS ou LinuxBUTT ou Mixxx
Automatiser une playlist permanenteLiquidsoap
Convertir un flux Ogg ou Opus existant en MP3Liquidsoap
Produire plusieurs débits simultanémentLiquidsoap
Gérer jingles, secours et programmation horaireLiquidsoap

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 8000 en 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

  1. Ouvrez les réglages de BUTT.
  2. Ajoutez une nouvelle configuration de serveur.
  3. Choisissez le type Icecast.
  4. Saisissez le nom d’hôte du serveur.
  5. Indiquez le port Icecast.
  6. Saisissez le mot de passe source.
  7. Choisissez le mountpoint /radio.mp3.
  8. 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

  1. Ouvrez VLC.
  2. Sélectionnez Ouvrir un flux réseau.
  3. Collez l’URL du mountpoint.
  4. 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é.

AuditeursMP3 64 kbit/sMP3 128 kbit/sMP3 192 kbit/s
100,64 Mbit/s1,28 Mbit/s1,92 Mbit/s
503,2 Mbit/s6,4 Mbit/s9,6 Mbit/s
1006,4 Mbit/s12,8 Mbit/s19,2 Mbit/s
50032 Mbit/s64 Mbit/s96 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

Un million de visiteurs !

Je suis tombé sur quelques fonds d’écrans d’Elisha Cuthbert. En fait je suis tombé sur ce site par hasard, au terme d’une recherche avec Google Images. Comme je trouve une image bien jolie, j’en fais d’abord un header pour mon thème LSD puis parcours d’un œil distrait le reste des galeries du site et c’est seulement à ce moment là que je la reconnais : c’est Kim, la fille de Jack Bauer dans 24 !

C’est assez marrant : autant je ne la supporte pas dans 24, autant en image de fond elle est très bien ^_^. Tiens, en parlant de 24, la saison 4 est déjà bien entamée : on a dépassé la moitié de la série et en sommes bientôt arrivé au 15ème épisode. Cette quatrième saison est un sans-faute pour l’instant : du tout bon. Je ne dis que ça !

Le million !

Wow, je ferme les yeux un instant et SkyMinds.Net franchit la barre du 1 million de visiteurs !!! Que de chemin parcouru depuis 1999, avec ces pages ajoutées une à une au fil du temps et de mes préoccupations…

Je remercierais bien mon staff technique, les designers, les programmeurs, les littéraires, les musiciens… mais non, à la place je vais juste dire ‘bravo moi !’ Parce que j’ai tout mis en œuvre et ‘bravo vous !’ Parce que ce succès ne serait pas sans vous. Ah oui, j’oubliais : merci aussi aux moteurs de recherche, sans eux vous ne m’auriez sûrement jamais trouvé ;-)

Zut, je suis à court de champagne avec toutes ces célébrations