Dernières venues de sites connues...
Derniers messages du forum...
xhtml 1.1

DocumentationsMise en place de serveursIceCast

Smiley forum Discussions sur ce sujet dans le forum Smiley 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

  1. Mettons en place l'arborescence de fichier dans un répertoire :
    Dans cet exemple : C:\Program Files\Kiwi\IceCast

    Liste de fichiers IceCast

  2. Reglons dès maintenant quelques valeurs dans le fichier de configuration : conf\icecast_kiwi.xml

    Attention !

    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 sources
    • relay-user - Le nom d'utilisateur requis lorsqu'un autre serveur relais demande la liste des flux
    • relay-password - Le mot de passe associé à ce compte
    • admin-user - Le nom d'utilisateur pour l'administration
    • admin-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
  3. Inscrivons le service :

    Nous choisissons ici le fichier conf\icecast_kiwi.xml comme fichier de configuration
    Le répertoire de base du service est : C:\Program Files\Kiwi\IceCast soit %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)
  4. Démarrons le service :

    sc start icecastd

    Résultat :

    Service démarré

    SERVICE_NAME: icecastd
            TYPE               : 10  WIN32_OWN_PROCESS
        	STATE              : 4  RUNNING

    Nous pouvons vérifier que tout c'est bien déroulé d'une autre manière : http://localhost:8000/

    Interface Web de IceCast

    Il n'y a rien d'autre sur cette page, car aucune source n'est actuellement montée

  5. 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

  1. Installation du plug-in

    Pour rappel il se trouve à l'adresse suivante : http://www.oddsock.org/tools/oddcastv3/

    Installation de OddCast

    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.rar

    Ces deux fichiers (lame_enc.dll et libfaac.dll) sont à placé dans le répertoire de Winamp (par défaut C:\Program Files\Winamp)

  2. Il faut maintenant activer le plug-in dans WinAmp, pour cela il faut se rendre dans les préférences :

    Préférence WinAmp, DSP
  3. Imédiatement après avoir sélectionner ce plug-in, une fenêtre OddcastV3 s'ouvre, nous pouvons y ajouter notre flux avec le bouton « Add Encoder » :

    Flux par défault de OddCast Bouton droit / Config

    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 :

    Configuration basic de OddCast

    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...

    Configuration de l'annuaire de OddCast

    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 »

    OddCast 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é :

    OddCast discret
  4. Nous pouvons avoir comme preuve que tout a marché, la page de statut du serveur : http://localhost:8000/

    OddCast connecté

    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

  1. WinAmp

    Ouvrir une url
  2. Windows Media Player

    Ouvrir une url

    A noter que Windows Media Player ne prend pas en charge l'affichage des titres de morceaux, ni le format AAC en natif...

  3. VideoLan (VLC)

    Ouvrir une url

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.

  1. 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 relayer
    • port - Le port du serveur distant
    • mount - Le point de montage distant à relayer
    • local-mount - Le point de montage local
    • on-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 authentification
    • password - 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...

  2. 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...

  1. Serveur source

    Admettons un autre serveur IceCast2 que nous voulons relayer, srvkiwi.nirvana.com avec 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 relais
    • relay-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>
  2. 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 à relayer
    • master-server-port - Le port du serveur distant
    • master-update-intervalt - L'intervalle (en secondes) au bout de laquelle, le serveur relais mettra à jour sa liste de flux
    • master-username - Le nom d'utilisateur valide pour effectuer le relais, configuré sur le serveur source : relay
    • master-password - Le mot de passe associé à cet utilisateur
    • relays-on-demand - Toujours l'utilisation de la bande passante... 1 = activé, pour relayer chaque flux à la demande
  3. 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.aac soit aussi un relais sur le serveur srvkiwi.nirvana.com ne change rien. En effet, le serveur kiwi.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...

Attention

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.
Cette partie du site est en construction

Creative Commons License
Cette création est mise à disposition sous un contrat Creative Commons.

Page générée en 0.013 secondes.