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

DocumentationsMise en place de serveursSHOUTCast

Smiley forum Discussions sur ce sujet dans le forum Smiley forum

Mise en place d'un serveur SHOUTCast

« SHOUTcast est un logiciel de broadcasting (diffusion) pour webradios. Il est associé au logiciel Winamp pour l'écoute. »

Wikipédia

Nous allons mettre en place un serveur ShoutCast de diffusion radio et de diffusion à la demande de MP3. Le logiciel ShoutCast créé par NullSoft (l'éditeur de WinAmp) est gratuit et existe sous différente plates-forme.
Le nom complet du serveur est ShoutCast DNAS, DNAS pour Distributed Network Audio Server
Heureusement, il n'est pas limité à WinAmp comme logiciel client, tout logiciel acceptant les flux réseau au format MP3 peut recevoir les flux des serveurs ShoutCast, ceci inclus Windows Media Player, VLC et bien d'autres...
Il n'est d'origine pas possible de l'utiliser comme service, mais comme application standard.

Ressources associés :

Sommaire

Outils nécessaires :

1) Installation du serveur

L'installation du serveur est tres simple, il suffit de lancer le programme shoutcast-1-9-5-windows.exe et de laisser les options par défauts :

Installation du logiciel ShoutCast

Actuellement il ne vaut mieu pas décocher la dernière option : "DNAS Config files and README", car le programme d'installation veut afficher le fichier README à la fin du processus

Il faut mieux supprimer l'élément du menu rajouter par le programme d'installation car il est en partie défectueux (*)

A supprimer

(*) Elements du menu démarrer non conforme aux langues non US (pas d'utilisation de variable dans l'installeur NSIS), obligation du bloc-notes comme éditeur de fichier au lieu de laisser le shell décider, chemin "démarrer dans" du programme principal totalement incorrect

2) Fichier de configuration

Nous allons maintenant éditer le fichier de configuration par défaut du serveur ShoutCast

Il se nomme : sc_serv.ini, et se trouve à l'emplacement : C:\Program Files\SHOUTcast

Ne vous inquietez pas pour les commentaire d'origine en anglais, des expliquations se trouve à la fin de ce document.

Remplacer le contenu de ce fichier par ceci :

;------------------------------
; Configuration générale
;------------------------------
;
	AdminPassword=admin
	; TitleFormat=[Kiwi] %s
	ContentDir=./content/
	; IntroFile=c:\intro%d.mp3
	; BackupFile=c:\backup%d.mp3
	; URLFormat=http://www.server.com/redirect.cgi?url=%s
	PublicServer=default
;
;------------------------------
; Source
;------------------------------
;
	Password=password
	AutoDumpSourceTime=30
;
;------------------------------
; Utilisateurs
;------------------------------
;
	MaxUser=5	
	AutoDumpUsers=0
	; ListenerTimer=600
	; BanFile=sc_serv.ban
	; RipFile=sc_serv.rip
	; RIPOnly=No
;
;------------------------------
; Journaux
;------------------------------
;
	ShowLastSongs=10
	LogFile=sc_serv.log
	RealTime=0
	ScreenLog=1
	TchLog=yes
	WebLog=no
	W3CEnable=no
	W3CLog=sc_w3c.log
	CleanXML=No
;
;------------------------------
; Réseau
;------------------------------
;
	SrcIP=ANY
	DestIP=ANY
	NameLookups=0
	Yport=80
	PortBase=8000
	; Sleep=833
	MetaInterval=8192
;
;------------------------------
; Relais
;------------------------------
;
	RelayServer=
	RelayPort=0
	AllowRelay=Yes
	AllowPublicRelay=Yes
;
;------------------------------
; Avancé
;------------------------------
;
	; Unique=my_server
	; CpuCount=1
;
;------------------------------

En gros pour diffuser simplement des morceaux MP3 sur le réseau, il suffit de regler 3 clés :

Plus d'information sur toutes ces clés au chapitre : Explication des options

Nous pouvons maintenant démarrer le serveur en lancant l'exécutable : sc_serv.exe

Il s'affiche alors une fenêtre semblable à celle-ci :

ShoutCast

Kill Server : sert à fermer le serveur
Hide monitor : minimise le serveur en icône

3) Diffusion depuis WinAmp

Il faut bien entendu pour cela avoir déja installé WinAmp, je n'expliquerais pas en détail cette installation, WinAmp est déja très simple et majoritairement déja installé sur la plupart des postes informatiques

Par contre, il faut installer le plug-in de diffusion pour WinAmp (http://www.shoutcast.com/download/broadcast.phtml#plugdownload) :

Lancer le fichier : shoutcast-dsp-1-9-0-windows.exe, les options par défaut suffisent encore :

Installation Plug-in DSP

Le plug-in de sortie "null" est très pratique sur un vrai serveur ne disposant pas de carte son, ou dont on prend le contrôle par RDP sans son
Il désactive la sortie son standard, ainsi le flux sera seulement envoyé au serveur, et non joué.

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

Imédiatement après avoir sélectionner ce plug-in, une fenêtre ShoutCast Source s'ouvre, nous pouvons y configuer les options de diffusion :

Encodage DSP Winamp

La qualité du flux audio

On peut y pré-régler 5 type d'encodage (pour a priori 5 connections)

Il y a deux type d'encodage; MP3 et AAC+, pour le format MP3 une qualité à partir de 96 kbps est suffisante, alors que pour le format AAC+, 48 kbps suffisent, même si 64 sont recommandés.

Avec WinAmp non mis-à-jour, il existe plusieurs bugs au niveau de l'encodage AAC dans les faibles bitrate

Il existe aussi plusieur bogues dans la mise à jour des titres dynamiques, ne pas hésiter à fermer le serveur, le plug-in, WinAmp et relancer le tout en ayant vérifier la mise à jour automatique des titres

Sortie DSP Connection

Les paramètres de connections

Ici aussi, on peut pré-regler 5 connections à des serveurs ShoutCast sur lesquels nous voulons diffuser

L'adresse : localhost peut être utilisé si le serveur est sur la même machine
Le port correspond au port réglé sur le serveur ShoutCast pour la diffusion, par défaut, 8000.
Le mot de passe, est celui de diffusion et non celui d'administration
Le numéro d'encodeur, est celui correspondant à celui reglé précédement

Sortie DSP Annuaire

Les paramètres du flux

L'option Make this server public sert à inscrire le flux dans l'annuaire ShoutCast, ainsi vous apparaîtrez dans l'annuaire radio de WinAmp et sur le site de ShoutCast

Les autres options servent à décrire le flux et donner des informations, les options de titre servent à mettre à jour le titre pour les cliens le supportant.

Une fois toutes les options remplies et le serveur en écoute nous pouvons lancer la connection avec le bouton Connect :

DSP Connecté

Dans le journal :

<05/08/06@13:19:21> [source] connected from 127.0.0.1
<05/08/06@13:19:21> [source] icy-name:Gentil Kiwi Server ; icy-genre:Pop / Rock
<05/08/06@13:19:21> [source] icy-pub:0 ; icy-br:128 ; icy-url:http://www.gentilkiwi.com
<05/08/06@13:19:21> [source] icy-irc: ; icy-icq: ; icy-aim:

Si la connexion échoue, cela vient probablement d'une de ces raisons :

  • Mot de passe source invalide
  • Port de base + 1 (couramment 8000+1 -> 8001) non accessible (firewall, routeur ou autre)

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

Icone DSP

4) Lecture du flux 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

5) Faire un serveur relais

L'intèret d'un serveur relais est de diminuer les besoins en bande passante pour le serveur principal

Par exemple, les serveurs gentilkiwi.nirvana.com et kiwi.nirvana.com ne peuvent recevoir que 5 clients chacun.
Nous pouvons grâce à un systeme de relais, recevoir 9 clients :

Serveurs relais

Il faut que dans le fichier de configuration du serveur il y ait :

Et dans le fichier de configuration du relais :

Lors du lancement du serveur relais :

<05/08/06@14:50:22> [source] relay host gave success (ICY 200 OK)
<05/08/06@14:50:22> [source] relay from gentilkiwi.nirvana.com established.
<05/08/06@14:50:22> [source] icy-name:Gentil Kiwi Server ; icy-genre:Kiwi
<05/08/06@14:50:22> [source] icy-pub:0 ; icy-br:128 ; icy-url:http://www.gentilkiwi.com
<05/08/06@14:50:22> [source] icy-irc:N/A ; icy-icq:N/A ; icy-aim:N/A

Si le serveur n'autorise pas que son flux soit relayés nous avons sur la console :

<07/24/06@14:51:40> [source] relay host returned error (ICY 403 Service Forbidden) [waiting 30s]
<07/24/06@14:51:40> [source] disconnecting from relay host [waiting 30s]

Astuce !

› Relayer un flux sans que le serveur autorise le relais...
Sans ré-injecter le flux radio écouté dans Winamp dans un serveur ShoutCast ;)

  • La meilleur méthode est d'utiliser IceCast, qui ne demande aucune modification particulière pour cela

Ou bien

  • Utiliser mon petit patch : kiwi_shoutcast_patch.rar

    Vérifié pour les versions suivante : Linux, Windows (console/gui), etc... 1.9.5 & 1.9.7 (il est sans doute valide pour d'autres versions)

    Exemple :

    C:\Program Files\SHOUTcast>sc_serv.exe
    *******************************************************************************
    ** SHOUTcast Distributed Network Audio Server
    ** Copyright (C) 1998-2004 Nullsoft, Inc.  All Rights Reserved.
    
    ...
    
    <07/24/06@04:39:08> [main] client main thread starting
    <07/24/06@04:39:08> [source] relay host returned error (ICY 403 Service Forbidden) [waiting 30s]
    <07/24/06@04:39:08> [source] disconnecting from relay host [waiting 30s]
    <07/24/06@04:39:10> [main] SIGINT; exiting!
    Kiwi ShoutCast Patch
    C:\Program Files\SHOUTcast>sc_serv.exe
    *******************************************************************************
    ** SHOUTcast Distributed Network Audio Server
    ** Copyright (C) 1998-2004 Nullsoft, Inc.  All Rights Reserved.
    
    ...
    
    <07/24/06@04:42:37> [main] client main thread starting
    <07/24/06@04:42:37> [source] relay host gave success (ICY 200 OK)
    <07/24/06@04:42:37> [source] relay from stream-aac.frequence3.net established.
    <07/24/06@04:42:38> [source] icy-name:FREQUENCE3 - www.frequence3.fr - No ads ! It's only HITS live from Paris France !
     - French Webradio ; icy-genre:Top 40 Dance Pop Rock
    <07/24/06@04:42:38> [source] icy-pub:0 ; icy-br:32 ; icy-url:http://www.frequence3.fr
    <07/24/06@04:42:38> [source] icy-irc:N/A ; icy-icq:N/A ; icy-aim:N/A
    <07/24/06@04:42:42> [main] SIGINT; exiting!

6) Contenu à la demande

ShoutCast Server peut faire office de serveur de contenu à la demande, à la manière d'un serveur Web

Il faut régler la clé : ContentDir=./content/ sur le répertoire contenant les fichiers
Par défaut, il faudra les placer dans le sous-répertoire content du serveur.

Cette version de ShoutCast Server supporte les sous-répertoires.

Avertissement

Les espaces dans les URL ne sont pas géré par le serveur, il faut donc les coder de manière adéquat sur le client.

Exemple :

C:\PROGRAM FILES\SHOUTCAST\CONTENT
|   Electric Six - Danger high voltage.mp3
|
\---others
    |   Kt Tunstall - Suddenly I See.mp3
    |
    \---les zics
            Texas - You Make Me Feel.mp3

Il faudra ouvrir respectivement ces URL dans les logiciels client :
pour le serveur : gentilkiwi.nirvana.com...

7) Explication des options

  1. Configuration générale

    • AdminPassword=admin

      Le mot de passe permettant d'administrer le serveur par l'interface web (http://serveur:8000/admin.cgi)

      Administration

      Le nom d'utilisateur est : admin

      Astuce :

      Pour se connecter directement, on peut utiliser une url sous cette forme : http://admin:motdepasse@serveur:8000/admin.cgi

    • TitleFormat=[Kiwi] %s

      Le format du titre du serveur par défaut, ce n'est pas le format d'affichage des titres dans WinAmp
      %s représente la chaîne indiqué par le logiciel diffusant

      Titre du serveur
    • ContentDir=./content/

      Le répertoire contenant les musiques au format MP3 pour la diffusion à la demande

      Dans le fichier de configuration original, nous avons :
      ContentDir=./content (Sans / à la fin)
      Ce qui est totalement faux, il faut obligatoirement un / à la fin pour symboliser un répertoire.
    • IntroFile=c:\intro%d.mp3

      Le fichier MP3 envoyé en introduction avant la diffusion MP3

      Le bitrate du fichier MP3 doit être le même que celui du flux envoyé ainsi que le nombre de canaux.
      Pour cela nous utilisons le caractêre %d qui représente le bitrate.
      Il faut donc un fichier : intro128.mp3 pour une diffusion de 128 kbps.
    • BackupFile=c:\backup%d.mp3

      Le fichier MP3 envoyé au client quand la source est déconnectée

      Même remarque que précédement pour le bitrate et le nombre de canaux

    • URLFormat=http://www.server.com/redirect.cgi?url=%s

      Format de l'adresse web indiqué par le logiciel diffusant
      %s représente la chaîne indiqué par le logiciel diffusant

      URL Stream
    • PublicServer=default

      Définit si le serveur sera public, on peut le positionner sur :

      • always : pour toujours inscrire le serveur dans l'annuaire ShoutCast
      • never : pour ne jamais l'inscrire
      • default : le serveur sera public si le client le demande
  2. Source

    • Password=password

      Le mot de passe permettant de diffuser auprès du serveur

      Mot de passe
    • AutoDumpSourceTime=30

      Le temps (en secondes) avant que la source soit déconnecté après sa fin de diffusion

  3. Utilisateurs

    • MaxUser=5

      Le nombre d'utilisateur maximum du serveur, il doit être proportionnel à la bande passante.

      Pour une bande passante de 100 Ko/s et une diffusion à 128 kbps

      100 / (128 / 8) = 6.25 utilisateurs, soit 6 utilisateurs.

      Pour plus de sécurité il est plus judicieu de fixer à un ou deux utilisateurs de moins

    • AutoDumpSourceTime=30

      Le temps (en secondes) avant que la source soit déconnecté après sa fin de diffusion

    • ListenerTimer=600

      Le temps (en secondes) d'écoute maximum d'un utilisateur

    • BanFile=sc_serv.ban

      Le fichier contenant la liste d'adresse IP banni du serveur

      Il se présente sous cette forme :

      192.168.0.0;0;Manual Add
      10.10.10.10;255;Manual Add

      La première entrée banis le réseau 192.168.0.0/24 la deuxième l'adresse IP unique 10.10.10.10

    • RipFile=sc_serv.rip

      Le fichier contenant la liste d'adresse IP ayant un accès privilégié au serveur

      Il se présente sous cette forme :

      192.168.1.34
      192.168.1.35
    • RIPOnly=No

      Indique si le serveur refusera la connection au clients ne figurant pas dans la liste d'adresse IP privilégié.

  4. Journaux

    • ShowLastSongs=10

      Nombre de morceaux pouvant figurer dans l'historique

    • LogFile=sc_serv.log

      Fichier contenant les activités sur le serveur

      <05/07/06@18:27:37> [SHOUTcast] DNAS/win32 v1.9.5 (Dec 27 2004) starting up...
      <05/07/06@18:27:37> [main] loaded config from C:\Program Files\SHOUTcast\sc_serv.ini
      <05/07/06@18:27:37> [main] initializing (usermax:5 portbase:8000)...
      <05/07/06@18:27:37> [main] No ban file found (sc_serv.ban)
      <05/07/06@18:27:37> [main] No rip file found (sc_serv.rip)
      <05/07/06@18:27:37> [main] opening source socket
      <05/07/06@18:27:37> [main] source thread starting
      <05/07/06@18:27:37> [main] opening client socket
      ...

      C'est ce qui apparaît dans la fenêtre du serveur ShoutCast :

      ShoutCast
    • RealTime=0

      Si il est actif et dans le cas d'une installation console, il est affiché chaque seconde une ligne indiquant le statut du serveur

    • ScreenLog=1

      Affiche à la console chaque évenement

    • TchLog=yes

      Journalise la demande de contact de l'annuaire ShoutCast

    • WebLog=no

      Journalise les connexions au mini serveur Web

    • W3CEnable=no

      Journalisation à un format compatible avec des analyseurs

    • W3CLog=sc_w3c.log

      Nom de fichier de ce même journal

    • CleanXML=No

      Nettoie ou pas les entrées dans le fichier XML (espaces en trop, etc..)

  5. Réseau

    • SrcIP=ANY

      Adresse IP pour la connexion du flux entrant
      En mettant 127.0.0.1 nous limitons la connexion en interne (du serveur vers lui même)

    • DestIP=ANY

      Adresse IP pour la connexion du flux sortant

    • NameLookups=1

      Résoud les adresses IP en noms pour la journalisation

    • Yport=80

      Port du serveurs annuaire ShoutCast

    • PortBase=8000

      Port de base pour la diffusion ShoutCast
      En n'ayant pas de serveur Web sur le port 80 et en fixant PortBase à 80, il ne sera pas nécessaire de rentrer de port dans les clients.

      Attention

      C'est sur ce port que les clients vont se connecter, il faut qu'il soit accessible depuis l'extérieur
      - Dans le cas d'un routeur-natteur, que ce port soit redirigé vers le poste serveur
      - Avec un firewall, autoriser la connexion entrante vers le serveur, et si besoin est, autoriser le programme à agir comme serveur
      - Pour certain anti-virus, autoriser le programme à agir comme serveur

    • Sleep=833

      Intervalle pour l'envoi de packets aux clients (en micro secondes)

    • MetaInterval=8192

      Intervalle en octets entre les envois de métadonnées

  6. Relais

    • RelayServer=server.nirvana.com

      Serveur auquel se connecter pour relayer le flux

    • RelayPort=0

      Port du serveur à relayer

    • AllowRelay=Yes

      Définit si un serveur ShoutCast peut relayer ce serveur

    • AllowPublicRelay=Yes

      Indique aux serveurs relais d'inscrire ce serveur dans l'annuaire ShoutCast

      • always : pour toujours inscrire le serveur dans l'annuaire ShoutCast
      • never : pour ne jamais l'inscrire
      • default : le serveur sera public si le client le demande
  7. Avancé

    • Unique=my_server

      Définit un identifiant unique pour l'instance de ce serveur, il peut être utilisé dans le fichier de configuration avec la variable $

    • CpuCount=1

      Indique dans un environnement multi-processeurs le nombre maximum de processeurs à utiliser

Dans un environnement avec plusieurs serveurs ShoutCast, on peut utiliser la directive Include=unfichier pour inclure un autre fichier de configuration à la suite

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

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