Un serveur de diffusion de MP3 vous permet d'envoyer des fichiers MP3 sur un réseau basé sur TCP. Ceci peut être l'Internet ou un réseau local / intranet.
Le principe de connexion est très semblable à celui d'un serveur web, les fichiers sont diffusés quand un client (le lecteur de MP3) se connecte sur le serveur.
Après avoir téléchargé et décompressé l'archive, un bon coup d'oeil dans le répertoire doc/ est une bonne chose, le manuel HTML est très utile et complet.
Si vous avez téléchargé le code source, suivez les instructions pour la compilation relative à votre système.
Icecast ne marchera correctement que si vous spécifiez correctement le nom du server dans le fichier de configuration icecast.conf qui est situé dans le répertoire etc. Il doit correspondre exactement au nom de machine résolu par son adresse IP.
Si vous voyez les lignes suivantes lors du démarrage du serveur Icecast, c'est qu'il y a un problème :
-> [05/Jan/2000:17:21:04] WARNING: Resolving the server name [your.server.name] does not work!
Editez le fichier icecast.conf situé dans le répertoire etc, localisez la ligne contenant l'entrée "server_name" et entrez les nom de votre serveur. En cas de doute, vous pouvez utiliser la commande hostname ou afficher le fichier /etc/hosts.
Un fois les modifications nécessaires faites, il vous faudra soit copier le fichier de configuration dans le répertoire bin, soit démarrer icecast avec l'option -c et spécifier l'emplacement du fichier ainsi :
[dj@megajukebox bin]$ ./icecast -c ../etc/icecast.conf
Si tout est configuré correctement, vous devriez voir quelque chose comme :
[dj@megajukebox bin]$ ./icecast -c ../etc/icecast.conf -d /home/dj/mp3/icecast/ Icecast Version 1.3.0 Starting... Icecast comes with NO WARRANTY, to the extent permitted by law. You may redistribute copies of Icecast under the terms of the GNU General Public License. For more information about these matters, see the file named COPYING. [05/Jan/2000:18:36:30] Icecast Version 1.3.0 Starting.. [05/Jan/2000:18:36:30] Using stdin as icecast operator console [05/Jan/2000:18:36:30] Tailing file to icecast operator console [05/Jan/2000:18:36:30] Server started... [05/Jan/2000:18:36:30] Listening on port 8000... [05/Jan/2000:18:36:30] Using [megajukebox] as servername... [05/Jan/2000:18:36:30] Max values: 1000 clients, 1000 clients per source, 10 sources, 5 admins -> [05/Jan/2000:18:36:30] [Bandwidth: 0.000000MB/s] [Sources: 0] [Clients: 0] [Admins: 1] [Uptime: 0 seconds]
L'option -d positionne le répertoire pour les fichiers journaux et les modèles.
Voici ci-dessous la liste des options de la ligne de commande :
-c [filename] Utilise le fichier comme un fichier de configuration. Veuillez noter que tout paramètre passé sur la ligne de commande est prioritaire sur le contenu de ce fichier. Notez également que le fichier icecast.conf contenu dans le répertoire courant est automatiquement lu quand vous spécifiez cette option, ainsi tout paramètre du fichier icecast.conf non spécifié dans le nouveau fichier de configuration sera utilisé par le serveur. -P [port] Port utilisé par toutes les connexions des clients, de la source audio et d'administration. Il est positionné à 8000 par défaut. -m [max clients] Nombre maximum de connexions clientes autorisées. Quand ce nombre est atteint, toute connexion cliente sera refusée avec un message~: 'HTTP/1.0 504 Server Full' -p [encoder password] Cette options positionne le mot de passe que l'encodeur doit utiliser pour pouvoir envoyer le flux vers le serveur. Notez que si vous compilez le serveur avec le support de crypt(), cet argument doit être une chaîne encryptée. -b Cette option permet au serveur icecast d'être lancé en tâche de fond (i.e. processus démon). Pour pouvoir utiliser les commandes d'administration, vous devrez alors vous connecter au serveur comme administrateur, en utilisant un client telnet ou équivalent. -d [directory] Rend tous les fichiers journaux créés par icecast et tous les modèles que icecast utilise relatifs à ce répertoire.
Voici ainsi comment démarrer le serveur, mais vous devez aussi connecter une source MP3 au serveur.
Vous avez le choix entre deux applications pour envoyer des données MP3 au serveur, Shout et LiveIce.
Shout envoie au serveur icecast une liste de MP3 à diffuser et est inclus avec icecast.
Vous créez la liste des fichiers MP3 avec la commande suivante :
find [répertoire MP3] -name '*.mp3' -print> playlist
Au niveau le plus simple, pour démarrer le service shout, exécutez la commande suivante :
[dj@megajukebox bin]# ./shout megajukebox -P hackme -p playlist
L'option -P spécifié le mot de passe nécessaire pour ajouter un point de montage à icecast, celui-ci est positionné à hackme..... Je vous suggère fortement de le changer, sinon quelqu'un le fera à votre place :-) L'option -p définit l'emplacement du fichier de liste. Voici ci-dessous une liste de toutes les options de la ligne de commande :
[dj@megajukebox bin]# ./shout Usage: shout <host> [options] [[-b <bitrate] file.mp3]... Options: -B <directory> - Utiliser le répertoire pour tous les fichiers de shout -C <file> - Utiliser le fichier comme fichier de configuration -D <dj_file> - Exécuter cette commande avant chaque chanson (system()) -P <password> - Utiliser le mot de passe spécifié -S - Afficher les paramètres et sort -V - Utiliser un affichage verbeux -X <desc> - Utiliser la description spécifiée -a - Activer la correction automatique du débit (transfert) -b <bitrate> - Démarrer en utilisant le débit spécifié -d - Activer le dj -e <port> - Se connecter sur le serveur au port spécifié -f - Ne pas envoyer les fichiers qui ne correspondent pas au débit spécifié -g <genre> - Utiliser un genre spécifique -h - Afficher l'aide -i - Utiliser les anciens en-têtes icy -k - Ne pas tronquer la liste interne (continuer) -l - Envoyer sans fin (en boucle) -m <mount> - Utiliser le point de montage spécifique -n <name> - Utiliser le nom spécifique -o - Désactive l'auto-détection du débit -p <playlist> - Utilise le fichier spécifié comme liste de MP3 -r - Lecture aléatoire de la liste -s - (Secret) Ne pas envoyer les meta data au serveur -u <url> - Utilise l'URL spcifié -v - Affiche la version -x - Ne pas mettre à jour le fichier cur (économise le processeur) -z - Passer en tâche de fond (mode démon) -t - Autoriser la diffusion des titres
LiveIce peut fonctionner dans 2 modes, il peut passer une liste de MP3 à Icecast ou il peut passer directement de l'audio en direct de la carte son.
Après avoir décompressé l'archive et lu le fichier README concernant la construction du paquet, assurez-vous que vous disposez du programme mpg123 car LiveIce en a besoin.
Il y a deux façons de configurer LiveIce : en éditant le fichier de configuration avec vi/emacs ou en utilisant l'outil de configuration basé sur Tk, ce qui est une façon très agréable de l'éditer :-)
Le meilleur endroit où sont décrits les détails internes du fichier de configuration liveice.cfg est la page de LiveIce où Scott couvre l'ensemble des options.
Ceci est une copie de mon fichier de configuration avec LiveIce positionné en mode mixer (diffusion à partir d'une liste de MP3).
NOTE : j'ai ajouté des commentaires au fichier, donc, si vous voulez faire du copier-coller, assurez-vous que les commentaires ne débordent pas sur une nouvelle ligne ou sinon LiveIce ne fonctionnera pas :-)
# Fichier de configuration liveice # Généré automatiquement SERVER megajukebox # Le nom de votre serveur * DOIT ETRE LE NOM DE RESOLUTION DU SERVEUR * PORT 8000 # Le port que le serveur Icecast écoute NAME Megajukebox # Des informations concernant le nom de votre serveur qui seront envoyées # aux lecteurs de MP3 et au serveurs de répertoires. # Par exemple, 'Sarah FM' ou 'ThisTown: Loud and Heavy Jazz - Internet Radio 24/7' GENRE Live # Des informations concernant le genre. Par exemple 'Talk' ou 'Dance' DESCRIPTION # Des informations concernant la station. Par exemple 'The best for reggae in the North' URL http://megajukebox:8000 # L'URL et le port du serveur PUBLIC 0 # Positionner à 1 si vous voulez que Icecast annonce votre station et ses détails # sur un serveur de répertoires, sinon laisser à 0 XAUDIOCAST_LOGIN # Peut être soit ICY_LOGIN ou X_AUDIOCAST_LOGIN. X_AUDIOCAST est préférable. MOUNTPOINT /techno # Positionne le point de montage du flux pour Icecast. A n'utiliser que si l'option X_AUDIOCAST est utilisée # sinon laisser la valeur par défaut icy_0 PASSWORD hackme # Mot de passe de l'administrateur Icecast SAMPLE_RATE 44100 # La fréquence du flux STEREO # Peut être MONO ou STEREO NO_SOUNDCARD # Voir ci-dessous HALF_DUPLEX # Positionne la carte son en mode duplex. Peut être HALF_DUPLEX ou FULL_DUPLEX USE_GOGO # Positionne l'encodeur à utiliser. Consulter le fichier README pour la liste complète. BITRATE 128000 # Positionne le débit du flux (voir ci dessous) VBR_QUALITY 1 # Positionne la qualité du débit variable (VBR) MIXER # Voir ci dessous PLAYLIST /megajukebox/playlist # Emplacement de la liste de MP3 (voir les détails sur la commande find plus loin dans ce chapitre) TRACK_LOGFILE track.log # Nom et emplacement du fichier où envoyer la liste des MP3 diffusés
Une fois que vous avez votre fichier de configuration, vous pouvez démarrer LiveIce ainsi :
[dj@megajukebox liveice]$ ./liveice /megajukebox/playlist 1 opening connection to megajukebox 8000 Attempting to Contact Server connection successful: forking process opening pipe!... writing password Setting up Interface Soundcard Reopened For Encoding Input Format: 16Bit 44100Hz Stereo Output Format: 256000 Bps Mpeg Audio IceCast Server: megajukebox:8000 Mountpoint: /techno Name: megajukebox - this and that radio - broadcasting 24/7 Genre: Techno Url: http://megajukebox.com Description: a load of digital noise -> but i know you like it :) Press '+' to Finish adding /megajukebox/demotunes/track_1.mp3 adding /megajukebox/demotunes/track_2.mp3 adding /megajukebox/demotunes/track_3.mp3 adding /megajukebox/demotunes/track_4.mp3 /megajukebox/demotunes/track_4.mp3 Adding New Channel 1 Adding New Channel 2 Channel 1 selecting /megajukebox/demotunes/track_1.mp3 Channel 2 selecting /megajukebox/demotunes/track_1.mp3 Playing track_1.mp3 searching for Id3v2 searching for Id3v1 copying the data fixing the nulls adding the url closing input file Using log track.log
La dernière ligne est un indicateur de crêtes.
Il y a plusieurs touches de contrôle pour le mode mixer :
Action Touche Canal 1 Touche Canal 2 ~~~~~~ ~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~ Sélectionne la piste suivante sur le canal 1 a Sélectionne la piste précédente sur le canal q z Démarre/Arrète le canal 2 s Réinitialise le canal w x Augmente le volume sur le canal 3 d Diminue le volume sur le canal e c Augmente la vitesse sur le canal 4 f Diminue la vitesse sur le canal r v Mode Sticky Activé/Aléatoire/Désactivé 5 g Prévisualisation du canal t b Piste aléatoire u m
Le fichier de configuration liveice.cfg est prévu pour le mode mixer. Pour utiliser LiveIce en mode audio, changez la ligne relative à MIXER en NOMIXER et changez la ligne NO_SOUNDCARD en SOUNDCARD et redémarrez LiveIce.
Tout oubli de positionner les options correctement amènera à des avertissements intéressants ;-)
946:Error: Line In mode *and* no soundcard??????? Eeejit!
Une fois que tout est positionné correctement et que vous avez placé la source externe, vous devriez être capable de diffuser de la musique =:-)
[dj@megajukebox liveice]$ ./liveice /megajukebox/playlist 0 Initialising Soundcard 16Bit 22050Hz Stereo Full Duplex opening connection to megajukebox 8000 Attempting to Contact Server connection successful: forking process opening pipe!... writing password Setting up Interface Soundcard Reopened For Encoding Input Format: 16Bit 22050Hz Stereo Output Format: 32000 Bps Mpeg Audio IceCast Server: megajukebox:8000 Mountpoint: /daves_band_live_at_the_club Name: megajukebox - Dave and the Dynamite - Live at the Roxy Genre: Live/Rock Url: http://megajukebox Description: megajukebox::Louder than a frog in a trashcan..... and almost as musical Press '+' to Finish Lvl: L: 8704 R: 11776
La dernière ligne est un indicateur de niveau du signal, si le signal est trop fort, vous obtiendrez un avertissement *clip*. Si tel est le cas, réduisez le gain de la source en entrée.
Ceux d'entre vous dotés d'une vue perçante ont pu remarquer que dans le fichier de configuration liveice.cfg, les première lignes commentées indiquent que le fichier a été généré automatiquement. Si vous utilisez l'interface en Tk liveiceconfigure.tk et que vous avez fait des changements à la main au fichier d'origine, vous les perdrez quand vous sauverez. Utilisez soit uniquement l'interface ou apprenez vi/emacs :-)
Après avoir décompressé l'archive, placez vous dans le répertoire et n'oubliez pas de lire le fichier README :-)
Fluid possède trois modes principaux de fonctionnement : la transmission, le relai et le transfert. Je ne vais détailler ici que la transmission.
Les fichiers de configuration associés à la transmission sont situés dans config/MP3TX.cfg. Pour tester le server, lancez-le avec les options suivantes, à ce moment-là, les valeurs des paramètres par défaut devraient êtres correctes :
java Fluid TX
Naturellement vous devez avoir Java d'installé auparavant sous une forme ou une autre. Vous pouvez utiliser le portage de Blackdown du JDK disponible à partir de http://www.blackdown.org ou Keffe si vous utilisez Redhat.
Fluid est livré avec quelques fichiers MP3 de test, donc si tout fonctionne, vous devriez voir quelque chose de similaire à ceci (j'ai lancé le serveur en utilisant Kaffe pour cette exemple, vous pouvez avoir à le lancer en utilisant java) :
[dj@megajukebox Fluid-Beta2J]$ kaffe Fluid tx ------- Fluid Streaming Server Beta 2 ------- This program is ShareWare(tm) and it will not be crippled in any way because of it. However if you do like the program and will use it commercial purposes, we ask of you to contact us at the address below for pricing info: Eldean AB E-mail: Sjoangsvagen 7 fluid@subside.com S-192 72 Sollentuna SWEDEN Fluid is Copyright Subside (C) 1998 written by Lars Samuelsson http://www.subside.com --------------------------------------------- * Transmission mode * Reading config from: config/MP3TX.cfg Reading playlist: playlist.m3u Server started on port: 2711 Accepting administrator login on port: 2710 P| Dr. Nick - Hello Everybody
Vous devez créer une liste de MP3 que vous désirez diffuser. Il s'agit d'une liste fixe que les utilisateurs ne pourront pas modifier ou faire de requêtes précises. Cette liste est nommée playlist.m3u et est située par défaut dans le répertoire racine.
Pour créer une liste de tous les fichiers MP3 d'un répertoire particulier (ou d'un disque), utilisez la commande suivante :
find [MP3 directory] -name "*.mp3" -print> playlist.m3u
Le serveur peut être administré à distance en invoquant ainsi un telnet sur le port d'administration, par défaut le port 2710 :
[dj@megajukebox Fluid-Beta2J]$ telnet localhost 2710 Trying 127.0.0.1..megajukebox Connected to localhost.localdomain. Escape character is '^]'. jaguar You are connected to the -Fluid- Streaming Server Type "help" for a command reference help The following commands are available: help conn curr exit curr Information about the currently broadcasted song: Title: Beer Talk Artist: Homer Simpson Album: The Simpsons Year: 1996 Comment: Borrowed this as an example Genre: Comedy
[dj@megajukebox config]$ cat MP3TX.cfg 2711 2710 5 4096 32 1000 jaguar playlist.m3u current.txt # --- Les lignes sont --- # 1. numéro du port (que le serveur utilise) # 2. numéro du port (pour administrer le serveur à distance) # 3. Nombre de connexions (que le serveur peut accepter) # 4 Taille des paquets lors des lectures/envois (en octets) # 5. Débit des MP3 en ko/s (tous les MP3 doivent avoir le même débit) # 6. Délai entre les chansons (en millisecondes) # 7. Mot de passe pour l'administration à distance # 8. Nom de la liste (liste au format .m3u) # 9. Nom du fichier dans lequel écrire les informations de la chanson (à partir des marques ID3)
Fluid a été mis à jour et a été diffusé sous licence GPL (Vas-y Lars !)
Voici les principales différences :
Litestream est semblable à Icecast dans son fonctionnement. Le système est composé d'un serveur de diffusion et d'une source.
Pour démarrer le serveur de diffusion, exécutez la commande avec le format suivant :
[dj@megajukebox]$ litestream <source port> <stream host> <stream port> <max listeners> <log ident> [<yp host> <yp port>]
Les options sont les suivantes :
source port C'est le numéro du port auquel vous connectez la source 'audio'.
stream host Il s'agit de l'adresse IP ou nom complet (FQDN) de votre serveur. Vous pouvez la déterminer avec la commande hostname pour le nom de domaine ou par un cat /etc/hosts pour l'adresse IP.
stream port C'est le numéro du port auquel les clients doivent se connecter.
max listeners Il s'agit du nombre maximum de clients pouvant se connecter à votre serveur.
log ident Les messages d'information seront écrits dans le fichier /var/log/messages. <log ident> est une chaîne de caractère utilisée pour identifier le serveur Litestream.
Par exemple, si vous utilisez la chaîne ident 'Litestream', les messages du serveur dans le fichier /var/log/messages seront semblables à :
Sep 18 19:32:20 linux Litestream[1901]: stream.c:555: main: 'server started'
yp host & yp port Ces 2 options spécifient l'hôte et le port d'un serveur yp (ou NIS) utilisé pour annoncer votre serveur aux serveurs de répertoires.
Voici un exemple :
[dj@megajukebox]$ litestream 5000 megajukebox 5555 1000 LitestreamServer
Cette partie est pour le système serveur. Une fois démarré, il attend qu'une source audio lui soit connectée, ce qui se fait avec la commande source.
Le format est tel que :
source <ip or hostname> <port> <name> <genre> <url> <irc> <icq> <aim> <public? (0, 1)> <reported bitrate (16, 18, 56, 128, etc.)> <playlist.txt> <log ident>
Voici ci-dessous la liste des options pour la commande source :
ip or hostname est le nom d'hôte ou l'adresse IP de l'ordinateur faisant touner le serveur Litestream.
port est le port sur lequel le serveur Litestream attend une source de diffusion.
name est le nom de votre flux.
genre est le genre de votre flux.
url est l'URL de la page web de votre flux.
irc est le channel IRC de votre flux.
icq est votre identifiant ICQ.
aim est votre identifiant AIM.
public est positionné à 0 ou à 1. 0 pour privé, 1 pour publique.
reported bitrate est le débit du flux qui sera indiqué au serveur YP. Ceci ne reflète pas nécessairement le débit réel de votre flux.
playlist.txt est le nom du fichier contenant la liste de MP3.
log ident est l'identifiant syslog qui précèdera chaque message d'information généré par la source de diffusion Litestream.
Voici un exemple de la commande Litestream présentée ci-dessus :
[dj@megajukebox]$ source megakukebox 5000 'Megajukebox The best jukebox ever' Various http://www.megajukebox.com \#megajukebox 0 N/A 1 128 /jukebox/playlist LitestreamSource
Le module Apache::MP3 permet au serveur Apache de diffuser des MP3. Il n'offre pas le même niveau de fonctionnalités que les serveurs Fluid, Litestream et Icecast.
Ce module dépend des modules MP3::Info et mod_perl, lesquels sont tous deux disponibles sur le site du CPAN.
Après avoir récupéré les fichiers nécessaires, lire le fichier README vous aidera certainement !
Tout d'abord, compilez le module, puis faites les changements au fichier de configuration d'Apache (ces changements devront être faits soit dans le fichier httpd.conf ou dans le fichier srm.conf).
Vous devez également créer les répertoires pour les icônes et une arborescence de répertoire pour les MP3.
La section 6 du fichier README détaille l'édition (ou la création) d'un fichier de configuration Perl. Ceci est nécessaire pour précharger le module MP3::Info sans lequel il peut faire planter le serveur Apache.
Dans le fichier httpd.conf, créez une entrée comme ceci :
Perlrequire /etc/httpd/conf/startup.perl
Modifiez la référence /etc/httpd/conf pour pointer sur l'endroit où sont stockés les fichiers de configuration Apache sur votre système.
Créez maintenant le fichier startup.perl à l'emplacement spécifié ci-dessus. Vous devriez avoir au minimum les lignes suivantes (vous devriez ici aussi ajuster l'emplacement du programme perl selon la configuration de votre système).
[dj@megajukebox conf]$ cat /etc/httpd/conf/startup.perl #!/usr/bin/perl use MP3::Info();
Redémarrez ensuite le serveur Apache et positionnez votre navigateur web vers l'un de vos nouveaux répertoires de MP3 :-)
Vous pourrez obtenir plus de documentation sur le module Apache::MP3 en exécutant la ligne suivante sur la ligne de commande :
[dj@megajukebox conf]$ perldoc Apache::MP3
Une grande quantité de sociétés et d'administrations utilisent des systèmes pare-feux pour empêcher les utilisateurs de se connecter sur des serveurs distants sur certains ports.
Une façon d'outrepasser ceci est d'exécuter votre serveur de MP3 en utilisant le port 80. Il ne sera plus possible alors d'avoir un serveur web sur la même URL ou la même adresse IP.
En lançant Icecast en mode 'Outrepasser le pare-feu', vous devrez alors lancer shout en utilisant l'option positionnant le port à 80, ainsi :
[dj@megajukebox bin]$ ./shout megajukebox -e 80 -P hackme -p ../playlist
Diffuser de l'audio peut consommer des quantités importantes de bande passante si le débit des serveurs de MP3 est trop élevé.
Considérons, par exemple, ce scénario. Une liaison T1 possède une capacité d'environ 1,55 Mo/s. Si vous diffusez vos MP3 en 128 kb/s stéréo, chaque lecteur connecté utilisera 256 kb/s, ainsi 6 utilisateurs seulement pourront se connecter à votre serveur MP3 en même temps sans problème. Et à ce débit, vous n'aurez guère d'utilisateurs se connectant par modem !
Vous devez donc prendre une décision concernant non seulement le débit auquel votre serveur est connecté à l'Internet, mais aussi celui auquel vos utilisateurs seront connectés. 24 kb/s stéréo semble donner une qualité de signal raisonnable auquel même les utilisateurs possédant un modem 56K pourront se connecter et qui autorise environ 32 connexions simultanées par la liaison T1 évoquée plus haut.
Si votre serveur tourne sur un intranet, les problèmes de bande passante peuvent encore être à considérer, spécialement si votre réseau fonctionne en 10 Mb/s.
Mais n'oubliez surtout pas de prévenir votre FAI ou votre administrateur système que vous allez faire de la diffusion, sinon vous pourriez avoir une mauvaise surprise. Certains FAI peuvent vous faire payer la bande passante au-delà d'une certaine limite et les administrateurs systèmes aiment bien savoir pourquoi leur réseau ralentit :-)
Je pense qu'il est sensé de supposer que les compagnies de disques n'aimeraient pas que vous fassiez de la diffusion audio sans leur permission ou sans paiement d'aucune sorte ! Alors, qu'avez-vous le droit de diffuser ?
Il s'agit d'une partie dans laquelle vous devez être conscient des ramifications légales car c'est vous qui serez légalement responsable.
Voici deux liens, l'un de l'Electronic Frontier Foundation (EFF) qui milite pour réduire les restrictions concernant la technologie. L'autre lien est celui de la Recording Industry Association of America (RIAA), qui cherche à protéger les droits des artistes contre le piratage.
Je vous suggère fortement de visiter ces deux sites, ainsi que d'autres plus spécifiques à votre localisation physique.
http://www.riaa.com/weblic/weblic.htm
NdT : on peut citer en France le site de la SACEM http://www.sacem.org pour la protection des droits d'auteurs des artistes et celui de l'AFUL http://www.aful.org pour la défense des libertés des citoyens par rapport aux nouvelle technologies (en plus de promouvoir les logiciels libres).