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,lame

Pré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 :
apt-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 debian

cd 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
Et ajouter y ceci : --with-lame



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 :

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 tapant cd ..
Puis tapez : 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.

Dans un terminal: 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.



Note : Vous pouvez également voir comment créer une webradio grâce à Icecast et Liquidsoap dans cet article.
Vus : 1222
Publié par Génération Linux : 126