Discussions sur ce sujet dans le 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
- 2) Fichier de configuration
- 3) Diffusion depuis WinAmp
- 4) Lecture du flux depuis un logiciel client
- 5) Faire un serveur relais
- 6) Contenu à la demande
- 7) Explication des options
Outils nécessaires :
-
ShoutCast Server - Permet de diffuser et de servir à la demande des flux multimédia sur le réseau
http://www.shoutcast.com/download/files.phtml -
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 pour WinAmp - Ajout permettant à WinAmp de se connecter au serveur ShoutCast afin d'emmetre un flux
http://www.shoutcast.com/download/broadcast.phtml#plugdownload -
Les versions non-officielles françisés de tout ces logiciels sur le site WinampFR.com
http://www.winampfr.com/
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 :
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 (*)
(*) 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 :
AdminPassword=adminC'est le mot de passe qui permettra d'adminitrer le serveur par l'interface Web
Password=passwordLe mot de passe permettant de diffuser auprès du serveur
MaxUser=5Le nombre d'utilisateur maximum du serveur, il doit être proportionnel à la bande passante.
PortBase=8000Port de base pour la diffusion ShoutCast, c'est sur ce port que les clients vont se connecter
Attention à ce que certains ports soit accessibles depuis l'extérieur (ouvrir les ports sur les routeurs, firewall, autoriser le programme dans les antivirus...)
8000- pour se connecter au serveur et recevoir le flux8000 + 1 = 8001- pour diffuser vers le serveur (non obligatoire si diffusion en local)
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 :
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 :
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 :
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 :
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
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
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 :
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é :
4) Lecture du flux 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)
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 :
Il faut que dans le fichier de configuration du serveur il y ait :
AllowRelay=Yes
Et dans le fichier de configuration du relais :
RelayServer=gentilkiwi.nirvana.comRelayPort=8000
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.rarVé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!
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.
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...
http://gentilkiwi.nirvana.com:8000/content/Electric%20Six%20-%20Danger%20high%20voltage.mp3http://gentilkiwi.nirvana.com:8000/content/others/Kt%20Tunstall%20-%20Suddenly%20I%20See.mp3http://gentilkiwi.nirvana.com:8000/content/others/les%20zics/Texas%20-%20You%20Make%20Me%20Feel.mp3
7) Explication des options
Configuration générale
AdminPassword=adminLe mot de passe permettant d'administrer le serveur par l'interface web (http://serveur:8000/admin.cgi)
Le nom d'utilisateur est :
adminAstuce :
Pour se connecter directement, on peut utiliser une url sous cette forme :
http://admin:motdepasse@serveur:8000/admin.cgiTitleFormat=[Kiwi] %sLe format du titre du serveur par défaut, ce n'est pas le format d'affichage des titres dans WinAmp
%sreprésente la chaîne indiqué par le logiciel diffusant
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.mp3Le 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%dqui représente le bitrate.
Il faut donc un fichier :intro128.mp3pour une diffusion de 128 kbps.BackupFile=c:\backup%d.mp3Le 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=%sFormat de l'adresse web indiqué par le logiciel diffusant
%sreprésente la chaîne indiqué par le logiciel diffusant
PublicServer=defaultDéfinit si le serveur sera public, on peut le positionner sur :
always: pour toujours inscrire le serveur dans l'annuaire ShoutCastnever: pour ne jamais l'inscriredefault: le serveur sera public si le client le demande
Source
Password=passwordLe mot de passe permettant de diffuser auprès du serveur
AutoDumpSourceTime=30Le temps (en secondes) avant que la source soit déconnecté après sa fin de diffusion
Utilisateurs
MaxUser=5Le 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.25utilisateurs, soit 6 utilisateurs.Pour plus de sécurité il est plus judicieu de fixer à un ou deux utilisateurs de moins
AutoDumpSourceTime=30Le temps (en secondes) avant que la source soit déconnecté après sa fin de diffusion
ListenerTimer=600Le temps (en secondes) d'écoute maximum d'un utilisateur
BanFile=sc_serv.banLe 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/24la deuxième l'adresse IP unique10.10.10.10RipFile=sc_serv.ripLe 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=NoIndique si le serveur refusera la connection au clients ne figurant pas dans la liste d'adresse IP privilégié.
Journaux
ShowLastSongs=10Nombre de morceaux pouvant figurer dans l'historique
LogFile=sc_serv.logFichier 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 :
RealTime=0Si il est actif et dans le cas d'une installation console, il est affiché chaque seconde une ligne indiquant le statut du serveur
ScreenLog=1Affiche à la console chaque évenement
TchLog=yesJournalise la demande de contact de l'annuaire ShoutCast
WebLog=noJournalise les connexions au mini serveur Web
W3CEnable=noJournalisation à un format compatible avec des analyseurs
W3CLog=sc_w3c.logNom de fichier de ce même journal
CleanXML=NoNettoie ou pas les entrées dans le fichier XML (espaces en trop, etc..)
Réseau
SrcIP=ANYAdresse IP pour la connexion du flux entrant
En mettant127.0.0.1nous limitons la connexion en interne (du serveur vers lui même)DestIP=ANYAdresse IP pour la connexion du flux sortant
NameLookups=1Résoud les adresses IP en noms pour la journalisation
Yport=80Port du serveurs annuaire ShoutCast
PortBase=8000Port de base pour la diffusion ShoutCast
En n'ayant pas de serveur Web sur le port 80 et en fixantPortBaseà 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 serveurSleep=833Intervalle pour l'envoi de packets aux clients (en micro secondes)
MetaInterval=8192Intervalle en octets entre les envois de métadonnées
Relais
RelayServer=server.nirvana.comServeur auquel se connecter pour relayer le flux
RelayPort=0Port du serveur à relayer
AllowRelay=YesDéfinit si un serveur ShoutCast peut relayer ce serveur
AllowPublicRelay=YesIndique aux serveurs relais d'inscrire ce serveur dans l'annuaire ShoutCast
always: pour toujours inscrire le serveur dans l'annuaire ShoutCastnever: pour ne jamais l'inscriredefault: le serveur sera public si le client le demande
Avancé
Unique=my_serverDéfinit un identifiant unique pour l'instance de ce serveur, il peut être utilisé dans le fichier de configuration avec la variable
$CpuCount=1Indique 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

Script PHP d'informations sur le serveur ShoutCast
