Discussions sur ce sujet dans le forum 
Mise en place d’un serveur IceCast
« Icecast est un projet de logiciel (dont un serveur) de diffusion de musique en flux (streaming). C'est-à-dire qu'à partir d'une machine installée sous Windows, Linux, Mac Os X, ... vous pouvez diffuser de la musique à des "clients" sur Internet ou sur votre intranet (réseau local). »
Wikipédia
IceCast tire son épingle du jeu en proposant de diffuser plusieurs flux avec le même serveur, ceci est rendu possible par des "points de montages" qui représente les flux...
IceCast peut recevoir un très grand nombre de flux et peut même se substituer à SHOUTCast.
Nous allons ici mettre en place un serveur IceCast sous la forme d'un service Windows, et non pas sous la forme d'une application tel que SHOUTCast Server.
Bien entendu nous tenterons de diffuser avec Winamp et le plug-in de diffusions OddCastV3 et même celui de SHOUTCast !
Ce tutoriel est valide pour la version 2.3.1 du serveur IceCast, il se peut que des explications soit obsolètes pour de futures versions
Sommaire
- Outils nécessaires
- Téléchargements alternatifs
- 1) Mise en place du service
- 2) Diffusion avec OddCastV3
- 3) Lecture depuis un logiciel client
- 4) Relayer un point de montage particulier
- 5) Relayer tous les points de montage d'un serveur
Outils nécessaires :
-
Icecast - Le serveur en lui même...
http://www.icecast.org/AvertissementJe ne recommande pas le téléchargement de la version présente sur le site officiel, la mise en place sous forme de service de IceCast à été faite trop rapidement (espérons que cela sera vite modifié ;)). Ce tutoriel ne concerne que la version alternative que je propose.
Je préconise l'emploi d'une version actuellement "faite maison", permettant de régler l'emplacement du fichier de configuration et qui ne nécessite pas de passer en argument le répertoire où est installé le service.
Voir la partie « téléchargements alternatifs » pour obtenir la version que je préconise.
-
WinAmp - Logiciel permettant de recevoir les flux ou d'en envoyer au serveur ShoutCast via un plug-in
http://www.winamp.com/player/free.php -
Plug-in de diffusion OddCastV3 pour WinAmp - Permet à WinAmp de se connecter au serveur IceCast afin d'emmetre un flux
http://www.oddsock.org/tools/oddcastv3/ -
Plug-in de diffusion SHOUTCast pour WinAmp - Permettant à WinAmp de se connecter au serveur IceCast afin d'emmetre un flux
http://www.shoutcast.com/download/broadcast.phtml#plugdownload
Téléchargements alternatifs
-
Service IceCast complet (exécutable, librairies, interface Web et d'administration, fichiers de configurations)
›icecast-2.3.1-win32-service.rar -
Code source modifié, prêt à compiler sous Visual Studio 6 ;)
›icecast-2.3.1-win32-service-src.rar
1) Mise en place du service
-
Mettons en place l'arborescence de fichier dans un répertoire :
Dans cet exemple :C:\Program Files\Kiwi\IceCast
-
Reglons dès maintenant quelques valeurs dans le fichier de configuration :
conf\icecast_kiwi.xmlAttention !Il ne faut pas mettre de caractère spéciaux dans le fichier de configuration (é, è, à, etc...) sous peine de plantage du serveur...
<clients>20</clients> <sources>5</sources>
clients- C'est le nombre de connexions réseau simultanées au serveurs (ce n'est pas obligatoirement le nombre maximum d'auditeurs), à augmenter selon la charge.sources- Nombre maximum de sources de flux
<source-password>psource</source-password> <relay-user>relay</relay-user> <relay-password>prelay</relay-password> <admin-user>admin</admin-user> <admin-password>padmin</admin-password>
source-password- Le mot de passe de connexion par défaut pour les sourcesrelay-user- Le nom d'utilisateur requis lorsqu'un autre serveur relais demande la liste des fluxrelay-password- Le mot de passe associé à ce compteadmin-user- Le nom d'utilisateur pour l'administrationadmin-password- Le mot de passe associé au compte d'administration
<hostname>localhost</hostname>
hostname- Le nom d'hôte DNS du serveur, pour la suite nous admetrons :kiwi.nirvana.com
-
Inscrivons le service :
Nous choisissons ici le fichier
conf\icecast_kiwi.xmlcomme fichier de configuration
Le répertoire de base du service est :C:\Program Files\Kiwi\IceCastsoit%ProgramFiles%\Kiwi\IceCast\En console et sous un compte administrateur :
sc create icecastd binPath= "\"%ProgramFiles%\Kiwi\IceCast\icecastService.exe\" -c \"conf\icecast_kiwi.xml\"" start= auto DisplayName= "[Kiwi] IceCast Server"Résultat :
[SC] CreateService réussite(s)
Démarrons le service :
sc start icecastdRésultat :

SERVICE_NAME: icecastd TYPE : 10 WIN32_OWN_PROCESS STATE : 4 RUNNINGNous pouvons vérifier que tout c'est bien déroulé d'une autre manière :
http://localhost:8000/
Il n'y a rien d'autre sur cette page, car aucune source n'est actuellement montée
Opérations sur le service
Par défaut, le service se lance automatiquement au démarrage du système, nous n'avons pas à nous en soucier
-
Démarrer le service :
sc start icecastd -
Stopper le service :
sc stop icecastd -
Désinstaller le service :
sc delete icecastd -
Modifier le fichier de configuration :
sc config icecastd binPath= "\"%ProgramFiles%\Kiwi\IceCast\icecastService.exe\" -c \"conf\icecast_kiwi.xml\""
-
2) Diffusion avec OddCastV3
Il n'est pas nécessaire d'installer WinAmp et ce plug-in sur le même poste que celui qui exécute IceCast
L'on peut diffuser plusieurs flux vers un seul et même serveur IceCast à condition que les points de montages soit différents
Installation du plug-in
Pour rappel il se trouve à l'adresse suivante : http://www.oddsock.org/tools/oddcastv3/
Autant avoir le plus de choix dans les formats ;)
Pendant l'installation, il se peut que l'on vous propose d'allez télécharger deux composant, répondez non, je les ai déja téléchargé pour vous :
lib_winamp.rarCes deux fichiers (
lame_enc.dlletlibfaac.dll) sont à placé dans le répertoire de Winamp (par défautC:\Program Files\Winamp)-
Il faut maintenant activer le plug-in dans WinAmp, pour cela il faut se rendre dans les préférences :
-
Imédiatement après avoir sélectionner ce plug-in, une fenêtre
OddcastV3s'ouvre, nous pouvons y ajouter notre flux avec le bouton « Add Encoder » :
Un flux par défaut à été automatiquement ajouté, il ne nous reste plus qu'à le configurer en double cliquant dessus, ou avec le bouton droit :
Nous voyons que nous pouvons par ce bouton ajouter plusieurs destinations pour le même flux, et par la même occasion, plusieur format :
A vous de faire vos réglages maintenant, ou inspirez-vous de cette capture.
Il est interessant de noter que OddCast peut diffuser vers SHOUTCast...
A vous de jouer encore une fois
Si l'on veut remplir ces paramètres et ne pas terminer dans un annuaire, il faut cocher, remplir les champs, puis décocher...
Il ne reste plus qu'à cocher la case « AutoConnect », puis cliquer le bouton « Connect »
Avec cette version du plug-in nous pouvons fermer la fenêtre sans que cela ne stoppe le plug-in, ce qui évite la désagréable présence de cette fenêtre.
Nous retrouvons l'îcone de plug-in minimisé :
-
Nous pouvons avoir comme preuve que tout a marché, la page de statut du serveur :
http://localhost:8000/
Comme le laisse deviner l'icône et le texte, on peut maintenant écouter ce flux depuis un autre ordinateur en cliquant sur les liens correspondant de cet encart.
3) Lecture depuis un logiciel client
WinAmp
Windows Media Player
A noter que Windows Media Player ne prend pas en charge l'affichage des titres de morceaux, ni le format AAC en natif...
VideoLan (VLC)
4) Relayer un point de montage particulier
Il est très simple de relayer un flux provenant d'un autre serveur IceCast ou ShoutCast, cela ne prend que quelques lignes.
IceCast permet même de relayer "à la demande" ce qui diminue la bande passante si aucun auditeur n'est présent.
Relais d'un point de montage IceCast
Relayer un serveur IceCast se fait en rajoutant ces lignes dans le fichier de configuration :
<relay> <server>srvkiwi.nirvana.com</server> <port>8000</port> <mount>/calme.aac</mount> <local-mount>/relay_calme.aac</local-mount> <on-demand>1</on-demand> <relay-shoutcast-metadata>0</relay-shoutcast-metadata> </relay>
server- L'adresse du serveur que l'on veut relayerport- Le port du serveur distantmount- Le point de montage distant à relayerlocal-mount- Le point de montage localon-demand- Permet de ne relayer le flux que si des clients le demande (0 = désactivé)relay-shoutcast-metadata- Relaye les informations de flux du serveur SHOUTCast (0 = désactivé)username- Le nom d'utilisateur si le serveur demande une authentificationpassword- Le mot de passe correspondant
Nous pouvons consulter la page :
http://localhost:8000/pour vérifier le fonctionnement...Surprise ! Il n'apparaît aucun titre/description, ni paramêtres du flux, comme sur cet extrait :
Stream Title: Unspecified name Stream Description: Unspecified description Content Type: Mount Uptime: Current Listeners: 0 Stream Genre: various Current Song:
Rien de bien méchant pour les auditeurs, en effet nous avons paramètré un flux à la demande, le serveur relais n'a donc aucune connexion à effectuer au serveur source tant qu'aucun auditeur n'a demandé à écouter le flux...
Relais d'un serveur SHOUTCast
Pour cet exemple nous allons relayer le serveur AAC de la radio : Fréquence 3 ! (http://www.frequence3.fr)
<relay> <server>stream-aac.frequence3.net</server> <port>7070</port> <mount>/</mount> <local-mount>/relais_frequence3.aac</local-mount> <on-demand>1</on-demand> <relay-shoutcast-metadata>1</relay-shoutcast-metadata> </relay>
Pour un serveur SHOUTCast il est important de définir deux paramètres :
mount- Le point de montage d'un flux audio SHOUTCast est toujours : /relay-shoutcast-metadata- Toujours à 1, relaye les informations de flux du serveur SHOUTCast, important pour la mise à jour des titres.
IceCast n'utilisant pas le même « User-Agent » que les serveurs ShoutCast lors de son identification, il peur relayer sans soucis un serveur ShoutCast n'ayant pas autorisé les relais puisqu'il est consideré comme un « lecteur »...
› C'est pour cette raison que nous pouvons relayer le serveur de Fréquence 3 ;)
5) Relayer tous les points de montage d'un serveur
Nous allons maintenant relayer tous les points de montage d'un autre Serveur IceCast2...
Serveur source
Admettons un autre serveur IceCast2 que nous voulons relayer,
srvkiwi.nirvana.comavec les points de montage suivants :/bouge.aac/calme.aac/divers.aac/films.aac/relais_magic_radio.aac
Ce dernier étant un relais vers la radio Magic Radio (http://www.magic-radio.net/)
Il faut, pour le relayer, remplir correctement ces informations dans le fichiers de configurations :
<authentication> <relay-user>relay</relay-user> <relay-password>passrelay</relay-password> </authentication>
relay-user- Le nom d'utilisateur valide pour effectuer le relaisrelay-password- Le mot de passe associé à cet utilisateur
Rajoutons aussi dans le fichier de configuration du serveurs les lignes suivantes :
(nous rentrerons en détails sur leurs utilisation par la suite)<mount> <mount-name>/calme.aac</mount-name> </mount> <mount> <mount-name>/films.aac</mount-name> </mount> <mount> <mount-name>/relais_magic_radio.aac</mount-name> </mount>
Serveur relais
Cette fois ci nous nous retrouvons sur le serveur initial :
kiwi.nirvana.com, pour "compliquer" la tâche, nous conserverons sur le serveur relais (kiwi.nirvana.com) les points de montage suivants :/monflux.aac(et oui, un flux est diffusé depuis tout à l'heure ;)/relais_frequence3.aac(pourquoi le démonter ? c'est un flux à la demande)
Il faut maintenant indiquer au serveur relais qui est le serveur source, et tout cela toujours dans le fichier de configuration :
<master-server>srvkiwi.nirvana.com</master-server> <master-server-port>8000</master-server-port> <master-update-interval>120</master-update-interval> <master-username>relay</master-username> <master-password>passrelay</master-password> <relays-on-demand>1</relays-on-demand>
master-server- L'adresse du serveur à relayermaster-server-port- Le port du serveur distantmaster-update-intervalt- L'intervalle (en secondes) au bout de laquelle, le serveur relais mettra à jour sa liste de fluxmaster-username- Le nom d'utilisateur valide pour effectuer le relais, configuré sur le serveur source :relaymaster-password- Le mot de passe associé à cet utilisateurrelays-on-demand- Toujours l'utilisation de la bande passante... 1 = activé, pour relayer chaque flux à la demande
Résultat pour le serveur relais
Mount Point : (/calme.aac) : ---------------------------- Stream Title: Unspecified name Stream Description: Unspecified description Content Type: Mount Uptime: Current Listeners: 0 Stream Genre: various Current Song: Mount Point : (/films.aac) : ---------------------------- Stream Title: Unspecified name Stream Description: Unspecified description Content Type: Mount Uptime: Current Listeners: 0 Stream Genre: various Current Song: Mount Point : (/monflux.aac) : ------------------------------ Stream Title: Kiwi Test Stream Description: Un flux de test Content Type: audio/aacp Mount Uptime: Thu, 20 Jul 2006 00:01:53 Paris, Madrid (heure d'?) Bitrate: 48 Current Listeners: 0 Peak Listeners: 0 Stream Genre: Soundtrack Stream URL: http://www.gentilkiwi.com/ Current Song: Whitney Houston - I Have Nothing Mount Point : (/relais_frequence3.aac) : ---------------------------------------- Stream Title: Unspecified name Stream Description: Unspecified description Content Type: Mount Uptime: Current Listeners: 0 Stream Genre: various Current Song: Mount Point : (/relais_magic_radio.aac) : ----------------------------------------- Stream Title: Unspecified name Stream Description: Unspecified description Content Type: Mount Uptime: Current Listeners: 0 Stream Genre: various Current Song:
Légende :
- Point de montage direct depuis OddCastV3 au serveur (crée précédemment)
- Point de montage relais vers Fréquence 3 (crée précedemment)
- Point de montage vers le serveur
srvkiwi.nirvana.com
Le fait que le point de montage
/relais_magic_radio.aacsoit aussi un relais sur le serveursrvkiwi.nirvana.comne change rien. En effet, le serveurkiwi.nirvana.com(le relais) considere ce point comme un autre.Comme précisé précédemment, les points de montage relais à la demande n'ont pas de méta-données d'informations, sauf lorsque qu'un client demande la connexion à ce point.
« Problème »
Où sont passé les points de montage suivants ?
/bouge.aac/divers.aac
Et bien, actuellement (version 2.3.1), si les points de montage ne sont pas explicitements déclarés dans le fichier de configuration du serveur à relayer (
srvkiwi.nirvana.com), ils ne seront pas relayés... Il faut donc tous les déclarer à l'aide de déclarations de point de montage :<mount> <mount-name>/bouge.aac</mount-name> </mount> <mount> <mount-name>/calme.aac</mount-name> </mount> <mount> <mount-name>/divers.aac</mount-name> </mount> <mount> <mount-name>/films.aac</mount-name> </mount> <mount> <mount-name>/relais_magic_radio.aac</mount-name> </mount>
6) Les définitions de point de montage
Comme vu précédemment, nous pouvons définir explicitement des points de montage dans une section <mount>. Son utilité n'est pas limité à définir les flux automatiquement relayé.
Voici un exemple de point de montage assez exhaustif :
<mount> <mount-name>/exemple.aac</mount-name> <stream-name>Nom de flux</stream-name> <stream-description>Description du flux</stream-description> <stream-url>http://lesiteduflux</stream-url> <genre>genre du flux</genre> <bitrate>48</bitrate> <type>audio/aacp</type> <!-- <subtype>vorbis</subtype> --> <!-- <intro>/intro.aac</intro> --> <username>sourceuser</username> <password>sourcepassword</password> <max-listeners>5</max-listeners> <!-- <max-listener-duration>3600</max-listener-duration> --> <!-- <dump-file>./monfichier.aac</dump-file> --> <fallback-mount>/autreflux.aac</fallback-mount> <fallback-when-full>1</fallback-when-full> <fallback-override>1</fallback-override> <public>0</public> <hidden>0</hidden> <burst-size>65536</burst-size> <!-- <mp3-metadata-interval>4096</mp3-metadata-interval> --> <authentication type="htpasswd"> <option name="filename" value="./test.passwd"/> <option name="allow_duplicate_users" value="0"/> </authentication> </mount>
Que de paramètres... ! Voyons tout cela un peu plus en détails...
mount-name- Le point de montage auquel sera appliqué cette section
Les paramètres suivant permettent de définir les informations pour l'affichage dans l'annuaire et sur la page web de statut de IceCast.
En aucun cas ils ne remplacent les paramêtres de flux générés par la source ! C'est à dire que vous ne verrez pas ces informations dans le logiciel de lecture des clients.stream-name- Le nom du fluxstream-description- La description de ce fluxstream-url- L'adresse du site internet du fluxgenre- Le/les genres représentant le fluxtype- Le type mime représentant le fluxsubtype- Le type de flux pour les annuaires ne reconnaissant pas le mime type
username- Un nom d'utilisateur pour la source, actuellement pour les logiciel de diffusion, il est par défaut :sourcepassword- Un mot de passe pour la sourcemax-listeners- Le nombre de clients maximum pour ce fluxmax-listener-duration- Le temps d'écoute maximum de ce fluxdump-file- Le flux sera écris dans ce fichier pour sauvegarde

