29 mai 2006

Configurer un serveur de streaming audio

Trustome a ajouté un tutorial pour faire un serveur streaming sous linux

Le but de ce tutoriel est de vous guider dans la mise en place d'un serveur de streaming audio. Ainsi vous pourrez diffuser exactement ce que vous entendez dans vos enceintes. Attention, tout ce que vous entendez sera envoyé (vos discussions Skype, le son des films que vous regardez...) !!!

1. Alternatives à la solution proposée

La solution proposée ci-dessous vous permet d'envoyer tout ce que vous entendez à vos clients. Si vous ne voulez envoyer que certaines musiques ou autres, envisagez d'utiliser Kaffeine ou VLC par exemple qui proposent une option de diffusion.

2. Configuration du serveur

Utilisateurs peu expérimentés

Afin de faciliter au maximum la tâche pour les utilisateurs peu expérimentés, j'ai conçu un script pour amaroK que vous pouvez trouver ici. Une fois installé et configuré correctement, il vous suffira de lancer amaroK pour commencer à diffuser (attention : TOUT ce que vous écoutez sera envoyé, pas seulement la musique écoutée dans amaroK) et le titre de la chanson en cours de lecture dans amaroK sera envoyé aux clients qui vous écoutent.

Ce script nécessite perl, le module perl-URI, iconv, wget, Icecast2 et Darkice. Vous pouvez les installer avec les utilitaires de votre distribution (urpmi, yum, apt-get...) ou à partir des sources (cf http://www.icecast.org/ et http://darkice.sourceforge.net/). Veillez à ce que Icecast ne soit pas lancé en tant que service au démarrage.

Une fois ces dépendances installées, le script doit pouvoir être exécuté sans problème. Le mot de passe root vous sera demandé car l'utilitaire Darkice a besoin d'être exécuté en tant que root. Si vous ne rencontrez pas d'erreur et si votre configuration est "standard" (vous utilisez alsa et vous écoutez sur la première carte son), vous pouvez passer à la configuration du client.

Utilisateurs un peu plus expérimentés ou n'utilisant pas amaroK

Si vous n'utilisez pas amaroK, la solution proposée ci-dessous ne vous permettra pas d'envoyer le titre de la chanson que vous écoutez à vos clients (à supposer que vous souhaitiez diffuser une chanson).

Téléchargez ceci et décompressez les fichiers icecast.xml et darkice.cfg. Ce sera les deux seuls dont nous aurons besoin. On supposera dans la suite qu'ils se trouvent dans /home/user/icecast.

Installez Icecast2 et Darkice. Vous pouvez les installer avec les utilitaires de votre distribution (urpmi, yum, apt-get...) ou à partir des sources (cf http://www.icecast.org/ et http://darkice.sourceforge.net/). Veillez à ce que Icecast ne soit pas lancé en tant que service au démarrage.

Maintenant dans une console, exécutez les commandes suivantes :

$ icecast -b -c /home/user/icecast/icecast.xml
$ su
# darkice -c /home/user/icecast/darkice.cfg

Si vous ne rencontrez pas d'erreur et si votre configuration est "standard" (vous utilisez alsa et vous écoutez sur la première carte son), vous pouvez passer à la configuration du client.

Une fois que vous avez terminé votre session de streaming, faites un Ctrl-C dans la console pour terminer Darkice puis un killall icecast.

Utilisateurs expérimentés / configuration avancée

Si vous avez rencontré des problèmes lors des étapes précédentes ou si vous souhaitez faire une configuration plus avancée du serveur, je vais vous donner quelques indications. Si cela ne suffit pas à votre bonheur, je vous recommande de lire la documentation de Icecast et de Darkice.

  • Vous utilisez OSS : je vous recommande de passer à ALSA qui est devenu le standard dans les distributions actuelles. Si vous ne pouvez ou ne voulez pas, vous devez spécifier dans le fichier darkice.cfg dans la section [Input] le device comme étant /dev/sound/dsp# où # est le numéro de la carte (blanc si 0).
  • Vous utilisez ALSA : si vous utilisez ALSA et que vous avez préféré éditer le fichier darkice.cfg fourni avec Darkice, vous devrez spécifier dans le fichier darkice.cfg dans la section [Input] le device comme étant plughw:0,1 où le premier numéro est le numéro de la carte et le deuxième le numéro du périphérique (d'après la documentation ALSA).
  • Et la sécurité ? par défaut les mots de passe ont été définis à azerty. Si vous les modifiez, pensez à les faire correspondre entre darkice.cfg et icecast.xml.
  • Comment choisir le format de diffusion ? par défaut le format de diffusion a été fixé à Ogg Vorbis en 128kbps VBR. Vous pouvez le modifier en consultant la documentation de Darkice et en modifiant le fichier darkice.cfg en conséquences. Si vous souhaitez uniquement modifier la qualité pour diminuer le débit, vous pouvez changer les entrées bitrate et quality dans le fichier darkice.cfg à la section [icecast2-0].

3. Configuration du client

La configuration du client est très simple. Vous devez tout d'abord obtenir l'adresse IP du serveur. Pour cela utilisez la commande ifconfig en root sur le serveur. Une fois que vous avez l'adresse IP, si vous n'avez pas changé les fichiers de configuration, vous devez ouvrir l'adresse http://ip_du_serveur:8000/music.ogg avec un client compatible.

Par défaut, le serveur diffuse un flux au format Ogg Vorbis. Les clients qui supportent ce format sont nombreux (amaroK, Kaffeine, VLC, winamp, XMMS...).

Merci trustonme

1 commentaire: