Création d'une webradio sous Ubuntu avec Amarok et Darkice
Pour le compte de mon activité en informatique libre INFORMALIBRE (http://www.informalibre.fr), j'ai travaillé sur la mise en place d'une solution de streaming depuis un PC sous Ubuntu.
Ainsi vous pouvez écouter http://www.meltinpot.fr grâce à un PC sous Ubuntu 9.04.
Voici comment j'ai fait :
SOMMAIRE :
Avertissement !Les pré-requis
Présentation de la solution de streaming
Installation et compilation de darkice
Installation d'AMAROK 1.4
Automatiser le lancement de darkice + faire des tests
Le gestionnaire de tâche planifié
Installer ICECAST2
Avertissement !
Les manipulations qui suivent nécessitent des manipulations à effectuer avec des droits superutilisateurs (root) dont le mauvais usage peut engendrer des effets néfastes pour votre système. Je ne suis donc pas responsable de vos erreurs. (j'ai repris ce texte d'avertissement très explicite sur le site de http://blog.profnoel.com/ )Les pré-requis
Vous devez avoir ubuntu-restricted-extra et lame , pour ce faire cliquez sur ce lien : apt://ubuntu-restricted-extras,lamePrésentation de la solution de streaming
La solution présenté ici a été retenu pour plusieurs raisons :AMAROK 1.14
- Fiabilité lors d'une lecture de musique en continue alors que d'autres logiciels boguent au bout de quelques temps (par exemple exaile)
- Meilleur qualité d'utilisation lors de l'ajout de musique dans des playlists par rapport à mpd et son frontend sonata par exemple.
DARKICE
- Programme qui envoi le son "streamé" (dans mon cas, depuis alsa) vers un serveur shoutcast hébergé par streamakaci©
- Possibilité d'envoyer le son vers un serveur icecast2 en simultané (pour un futur streaming en ogg vorbis).
- Plus grande fiabilité que edcast-jack
Installation et compilation de Darkice
Nous devons installer Darkice et Amarok 1.4, nous allons commencer par darkice !DARKICE
Pour des raisons liés au copyright sur le support du mp3, Darkice n'est pas compilé avec le format mp3 en standard.
Nous devons donc le compiler nous même, mais comme il est dans les dépôts source nous pouvons faire ça très simplement en suivant ce tuto : http://doc.ubuntu-fr.org/projets/paquets/recompiler_un_logiciel_des_depots
C'est parti pour la compilation de Darkice:
Tout d'abord, il faut installer build-essential, dpkg-dev et fakeroot, un clic sur le lien suivant permet d'installer les paquets très facilement: apt://build-essential,dpkg-dev,fakeroot (d'autres méthodes existent : http://doc.ubuntu-fr.org/tutoriel/comment_installer_un_paquet). Bien attendre que tout soit installé et ne pas faire autre chose tant que vous n'avez pas cliqué sur OK (le système vous dit que tout à bien été installé, appuyer sur "Afficher le bureau", en bas à gauche pour voir si des fenêtres ne sont pas cachées).
Ensuite lancez un terminal : Applications->Accessoires->Terminal
tapez :
Et ajouter y ceci : --with-lameapt-get source darkice
(ce qui va installer les sources de darkice)
Ensuite rendez-vous dans le répertoire de darkice puis dans le répertoire debiancd darkice-0.19
puis entrer, puis cd debian puis entrer
Utilisez ensuite la commande suivante :gksudo gedit rules
gksudo plutôt que sudo car nous lançons un logiciel gtk)
Recherchez la ligne :
dh_auto_configure -- --prefix=/usr --sysconfdir=/usr/share/doc/darkice/examples
Cela vous donnera cette ligne :
dh_auto_configure -- --prefix=/usr --sysconfdir=/usr/share/doc/darkice/examples --with-lame
Enregistrez rules et quittez gedit (vous devriez revenir au terminal)
Ensuite dans votre console tapez :
sudo apt-get build-dep darkice
(ainsi nous allons télécharger toutes les dépendances sources de darkice)Il devrait s'afficher ceci :
Les NOUVEAUX paquets suivants seront installés : debhelper dpatch gettext html2text intltool-debian libasound2-dev libfaac-dev libjack-dev libjack0.100.0-dev libmail-sendmail-perl libmp3lame-dev libogg-dev libsys-hostname-long-perl libtwolame-dev libvorbis-dev patchutils po-debconf
0 mis à jour, 17 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 4677ko dans les archives.
Après cette opération, 18,4Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ?
Taper O puis entrer
Il vous faut maintenant quitter le répertoire debian, grâce à la commande :Puis tapez :cd ..
(ce qui vous fait aller au répertoire parent)
Maintenant tapez :sudo fakeroot debian/rules binary
Un paquet deb sera créé dans le répertoire parent.
Vous pouvez y aller en tapantcd ..
sudo dpkg -i darkice_0.19-1ubuntu2_i386.deb
(il se peut que vous n'ayez pas la même version de darkice, vérifier en tapant : ls )Voilà darkice est installé avec le support mp3 !
Il vous faut maintenant configurer le fichier darkice.cfg qui ce situe ici : /etc/darkice.cfg
Puis dans le terminal (console) tapez :
gksudo gedit /etc/darkice.cfg
A l'intérieur, ajoutez les lignes suivantes (à modifier suivant vos besoins, avec vos mots de passe et login) :
[general]
duration = 0 # durée de l'encodage, en seconde. 0 pour tout le temps
bufferSecs = 5 # Taille de buffer d'attente, en seconde
reconnect = yes # yes, tente de se reconnecter en cas de déconnection
[input] # Entrée, dans ce cas c'est le son provenant de la carte son qui est utilisé (il plus particulièrement celui de l'entrée son de la carte son
device = hw:0,0 # Utilise le périphérique alsa comme entrée
sampleRate = 44100 # Échantillonnage
bitsPerSample = 16 # Bits par sample, laissez 16
channel = 2 # Canal. 1 = mono, 2 = stereo
[shoutcast-0] # Pour un serveur shoutcast
bitrateMode = abr # average bit rate
bitrate = 50 # bitrate du flux envoyer au server
quality = 1 # Meilleur qualité
server = str75.streamakaci.com #adresse du serveur, en local c'est localhost
port = 7931 # port du serveur shoutcast, normalement cela devrait être 7930 mais bizarrement c'est 7931 qui fonctionne pour shoutcast
password = ******** # Mots de passe du server
channel = 2 # # Canal. 1 = mono, 2 = stereo
name = Meltin'pot # Nom du flux
description = Meltin'pot la webradio du bassin minier
url = http://www.meltinpot.fr #Url relative au flux
genre = Radio jeune # genre du flux
public = yes # Dire si le flux est en ligne
format=mp3 # Format d'encodage mp3
[icecast2-0] # Pour un serveur ICECAST2
bitrateMode = vbr # average bit rate
format = vorbis # Format d'encodage: ogg vorbis
bitrate = 128 # bitrate du flux envoyé au server
quality = 0.4 #
server = 127.0.0.1 ##adresse du serveur, en local c'est localhost ou 127.0.0.1
port = 8000 # port du serveur ICECAST 2.0 en générale : 8000
password = *********** # Mots de passe pour le serveur icecast2
mountPoint = music.ogg # Point de montage du serveur icecast2
name = Meltin'pot # Nom du flux
description = Meltin'pot la webradio du bassin minier
url = http://www.meltinpot.fr # Adresse du flux
genre = Radio jeune #Genre du flux
public = yes # Dire si le flux est en ligne
Enregistrez et quittez !
Pour voir si le streaming fonctionne, tapez :
darkice -v
-v (verbose=bavard) pour avoir plus d'infos que ce qu'il se passe !
Si tout marche bien vous devriez avoir ceci (j'ai enlevé des lignes pour que ça soit plus clair) :
29-Jul-2009 16:04:44 Using ALSA DSP input device: hw:0,0
29-Jul-2009 16:04:44 encoding
29-Jul-2009 16:04:44 set lame mode 1
29-Jul-2009 16:04:44 set lame channels 2
29-Jul-2009 16:04:44 set lame in sample rate 44100
29-Jul-2009 16:04:44 set lame out sample rate 44100
29-Jul-2009 16:04:44 set lame abr bitrate 3
29-Jul-2009 16:04:44 set lame abr mean bitrate 50
29-Jul-2009 16:04:44 set lame lowpass frequency 0
29-Jul-2009 16:04:44 set lame highpass frequency 0
29-Jul-2009 16:04:44 set lame psycho acoustic model 1
29-Jul-2009 16:04:45 BufferedSink, new peak: 417
29-Jul-2009 16:04:45 BufferedSink, remaining: 31583
Faire CTRL-C pour arrêter le défilement
À ce stade vous émettez ce qui entre dans votre carte son.
Je n'ai pas réussi à enregistrer directement le son qui passe dans les haut parleurs, j'ai donc acheté un petit câble jack, je l'ai branché dans la sortie son de la carte son et je l'ai fait rentrer dans l'entrée micro.
P.S. : J'y suis arrivé sur un autre PC, il semble qu'il faille cocher PCM-enregistrement
Ensuite il faut faire les bon réglages afin que le son ne soit ni trop fort, ni trop faible
Voici mes entrées et sorties son :
Le gestionnaire de volume
Pour moi, j'ai sélectionné l'entrée Micro
Le contrôleur de niveau d'enregistrement
Installation d'AMAROK 1.4 (il va envoyer le son à alsa, cad vos hauts parleurs)
Pour installer amarok1.4 à la place d'amrok2 qui n'a pas encore toutes les fonctionnalités :Ajoutez cette ligne dans la liste des dépôts :
deb http://ppa.launchpad.net/bogdanb/amarok14/ubuntu jaunty main
Il faut ajouter cette ligne dans le gestionnaire de mise à jour,
Système->Administration->Sources de mise à jour
Puis choisir l'onglet : Logiciels de tierces parties
Cliquez sur ajouter et entrez la ligne: deb http://ppa.launchpad.net/bogdanb/amarok14/ubuntu jaunty main
Le système va vous proposer de mettre à jour la liste des logiciels, acceptez.
Puis installer amarok1.4 via synaptic, pour savoir comment faire : http://doc.ubuntu-fr.org/tutoriel/comment_installer_un_paquet, voici amarok 1.4 :
ça devrait ressembler à ça :
Automatiser le lancement de darkice + faire des tests
Création d'un script pour détecter si darkice est lancé et si il n'est pas lancé, le relance.Afin d'être sûr que le flux fonctionne en permanence (on émet une webradio quand même), et vu que darkice dysfonctionne parfois... et qu'aucun logiciel d'émission de flux ne fonctionne parfaitement... je suis parti du principe qu'il fallait détecter si darkice était lancé pour le relancer au cas où.
J'en profite aussi pour relancer darkice si la connexion internet ne fonctionne plus (sinon source de plantage).
Allez dans un répertoire que vous aurez préalablement créé, par exemple pour moi : /home/votrenomd'utilisateur/script et créez un fichier texte en faisant clic droit puis "Créer un document -> fichier texte"
Nommer le "script"
A l'intérieur du fichier texte entrez :
#!/bin/sh
while :
do
variable=`ps -d | grep darkice`
if [ "$variable" = "" ]
then
darkice &
else
echo oui
fi
ping -q -c 2 www.google.fr >/dev/null 2>&1
if [ $? -eq 0 ]
then
echo non
else
killall darkice
fi
done
Puis enregistrez.
Faite un clic droit sur votre fichier, puis modifiez les permissions pour permettre l'exécution.
Ensuite allez sur votre bureau et faîtes un clic droit et choisir "Créer un lanceur"
Allez choisir votre script (en cherchant son chemin), puis choisissez lui une icône.
Voilà, c'est fait
Le gestionnaire de tâche planifié
Nous allons dire au gestionnaire de tâche planifiées qu'il faut tuer Darkice 4 fois par jour ainsi nous sommes sûr quand cas de souci il sera relancé toutes les 6 heures ! Le script que nous avons créé avant relancera automatiquement Darkice !D'abord pour que ce soit plus facile à faire, il faut installer gnome-schedule en cliquant sur ce lien apt://gnome-schedule
Pour créer une tâche planifiée faire : "Nouveau -> Une tâche lancée régulièrement"
Puis dans titre mettre : Relancer darkice
Dans commande mettre :
killall darkice
Puis choisir expert, dans heure mettre 0 et dans minute mettre 0
Dans les autres cases laisser *, ce qui veut dire que que la commande sera effectué tous les jours, tous les mois, tous les jours de la semaine.
Puis cliquez sur : "Ajouter comme un modèle", comme cela vous n'aurez qu'a sélectionner plusieurs fois votre modèle.
Refaire "Nouveau" puis : "A partir d'un modèle", choisissez et modifiez votre tâche plusieurs fois
Il ne vous restera plus qu'a lancer Amarok ainsi que votre script à chaque démarrage de l'ordinateur (bien sûr normalement l'ordinateur ne doit jamais redémarrer).
Installer ICECAST2
Icecast2 est l'équivalent libre de shoutcast, ce logiciel permet à plusieurs personnes de se connecter à votre flux radio.Pour installer Icecast2 cliquer sur ce lien : apt://icecast2.
Configuration de Icecast2 (inspirée de http://doc.ubuntu-fr.org/tutoriel/comment_creer_une_webradio)
Éditez le fichier /etc/icecast2/icecast.xml
, fichier de configuration de Icecast2.
gksudo gedit /etc/icecast2/icecast.xml
Il y a pas grand chose à modifier, à part les mots de passe.
Ceux ci doivent correspondre à ceux inscrit dans votre fichier icecast.cfg
<limits>
<clients>5</clients>
<sources>5</sources>
<threadpool>5</threadpool>
<queue-size>524288</queue-size>
<client-timeout>30</client-timeout>
<header-timeout>15</header-timeout>
<source-timeout>10</source-timeout>
<burst-on-connect>1</burst-on-connect>
<burst-size>65535</burst-size>
</limits>
<authentication>
<!-- Sources log in with username 'source' -->
<source-password>VOTRE_MOT_DE_PASSE</source-password>
<!-- Relays log in username 'relay' -->
<relay-password>VOTRE_MOT_DE_PASSE</relay-password>
<!-- Admin logs in with the username given below -->
<admin-user>admin</admin-user>
<admin-password>VOTRE_MOT_DE_PASSE</admin-password>
</authentication>
<hostname>127.0.0.1</hostname>
Pour faire tourner Icecast2 en tache de fond, Éditez le fichier /etc/default/icecast2 et modifiez à la fin du fichier pour obtenir :
ENABLE=true
gksudo gedit /etc/default/icecast2
Puis relancez icecast2, il peut être nécessaire de le faire deux fois
sudo /etc/init.d/icecast2 restart
Vous pouvez maintenant accéder au serveur icecast2 à l’adresse http://adresse.com:8000/ (http://127.0.0.1:8000/ si vous êtes en local).Voilà, amusez-vous bien !
Pour finir, voici un historique de mes essais: http://forum.ubuntu-fr.org/viewtopic.php?id=331886.