[Tuto] Raspberry Pi et Darkice pour le streaming audio

raspberry-pi-esi-u24

Dans ce tuto, nous allons détailler la marche à suivre pour diffuser votre flux audio vers un serveur Icecast.

Pour ce tutoriel, nous avons utilisé le matériel suivant :

Pour commencer, il faut télécharger l’image de Raspbian Jessie : https://www.raspberrypi.org/downloads/raspbian/

Une fois téléchargé et décompressé, nous passons par Win32 Disk Imager (si vous êtes sous Windows)

On choisit son image -> raspian-jessie.img
On insert sa carte SD dans le PC et dans « Device », on choisit le lecteur qui contient la carte SD.

Il ne vous reste qu’à cliquer sur « Write » pour écrire l’image sur votre carte SD.

Une fois l’écriture terminée, on insert la carte dans le Raspberry Pi puis on relie : le clavier, la souris, l’écran, la carte son, on raccorde à internet et on alimente le tout en courant.

Pour le reste des opérations, nous avons suivi le tuto suivant : http://omara.li/broadcasting-with-raspberry-pi/

Pré-configuration

On commence par ajouter un dépôt et faire la mise à jour :

$ sudo sh -c "echo 'deb-src http://mirrordirector.raspbian.org/raspbian/ wheezy main contrib non-free rpi' >> /etc/apt/sources.list"
$ sudo apt-get update
$ sudo apt-get upgrade

Peu à l’aise avec VIM, nous n’avons pas suivi le tuto et nous avons décidé d’utiliser nano comme éditeur de texte, installé par défaut, pour l’édition de certains fichiers de configuration.

Configuration de la carte son

Maintenant, nous devons nous assurer que la carte son et le Raspberry Pi peuvent parler entre eux , pour ce faire , nous allons utiliser  arecord

$ arecord -l
arecord fournira alors une liste des cartes son disponibles avec chacune un numéro de périphérique (nous en aurons besoin plus tard). Il devrait y avoir qu’un seul périphérique répertorié.
**** Liste des Périphériques Matériels CAPTURE ****
carte 1: U24XL [U24XL], périphérique 0: USB Audio [USB Audio]
 Sous-périphériques: 1/1
 Sous-périphérique #0: subdevice #0
Branché un microphone ou une autre source audio dans la carte son, nous allons maintenant tester si cela fonctionne. Une fois que vous êtes prêt, lancé cette commande et parlé dans le micro ou lancé votre source audio, un fichier appelé temp.wav sera créé : (remplacez le « 1 » par le numéro de votre carte/périphérique si besoin)
$ arecord -D plughw:1,0 temp.wav
Une fois que vous avez fini, appuyez sur Ctrl-C pour arrêter l’enregistrement. Maintenant, lancez cette commande pour voir si vous pouvez entendre le son :
$ aplay temp.wav
Si vous entendez quelque chose, alors c’est que cela fonctionne, si ce n’est pas le cas, alors vous allez devoir un peu tâtonner pour résoudre ce problème.
Si vous trouvez le volume de l’enregistrement trop faible, essayez d’utiliser la commande suivante pour accéder à l’outil pour équilibrer le niveau d’enregistrement :
$ sudo alsamixer
Une fois que vous êtes satisfait du niveau sonore, exécutez la commande suivante pour enregistrer les paramètres :
$ sudo alsactl store

Darkice

Plutôt que de compiler Darkice et d’installer de nombreux paquets pour la prise en charge du format mp3, nous allons utiliser le paquet .deb de l’auteur du tuto, disponible sur son github : https://github.com/x20mar/
$ wget https://github.com/x20mar/darkice-with-mp3-for-raspberry-pi/blob/master/darkice_1.0.1-999~mp3+1_armhf.deb?raw=true #note link may change!
$ mv darkice_1.0.1-999~mp3+1_armhf.deb?raw=true darkice_1.0.1-999~mp3+1_armhf.deb
$ sudo apt-get install libmp3lame0 libtwolame0
$ sudo dpkg -i darkice_1.0.1-999~mp3+1_armhf.deb
Nous devons maintenant configurer Darkice :
$ sudo cp /usr/share/doc/darkice/examples/darkice.cfg /etc/
Maintenant, en utilisant votre éditeur de texte favori (nano), modifiez le fichier de configuration de Darkice  pour utiliser la bonne carte son et pour se connecter à Icecast. Vous aurez besoin de changer la valeur « device » : plughw: 1,0
$ sudo nano /etc/darkice.cfg
Pour exemple, voici le fichier de configuration darkice.cfg
# this section describes general aspects of the live streaming session
[general]
duration        = 0           # duration of encoding, in seconds. 0 means forever
bufferSecs      = 5           # size of internal slip buffer, in seconds
reconnect       = yes         # reconnect to the server(s) if disconnected

# this section describes the audio input that will be streamed
[input]
# device        = /dev/dsp    # OSS DSP soundcard device for the audio input
device          = plughw:1,0  # OSS DSP soundcard device for the audio input
sampleRate      = 48000       # sample rate in Hz. try 11025, 22050 or 44100
bitsPerSample   = 16          # bits per sample. try 16
channel         = 2           # channels. 1 = mono, 2 = stereo

# this section describes a streaming connection to an IceCast2 server
# there may be up to 8 of these sections, named [icecast2-0] ... [icecast2-7]
# these can be mixed with [icecast-x] and [shoutcast-x] sections
[icecast2-0]
bitrateMode     = abr         # average bit rate
format          = vorbis      # format of the stream: ogg vorbis
bitrate         = 96          # bitrate of the stream sent to the server
server          = #IPdeVotreServeurIcecast # host name of the server
port            = 8000        # port of the IceCast2 server, usually 8000
password        = #MotDePasse # source password to the IceCast2 server
mountPoint      = technic2radio.ogg  # mount point of this stream on the IceCast2 server
name            = Technic2radio Raspberry Pi # name of the stream
description     = Broadcast from Raspi # description of the stream
url             = https://technic2radio.fr # URL related to the stream
genre           = my own      # genre of the stream
public          = yes         # advertise this stream?

Attention à utiliser une valeur prise en charge par votre carte son pour la fréquence d’échantillonnage (samplerate = 48000). Lors des premiers tests, nous avions indiqué 44100, mais nous avions des « pop » sur le signal de sortie, le réglage à 48000 a réglé le problème.

Boot Start

Pour que Darkice se lance automatique lorsque le Raspberry Pi redémarre, nous avons suivi ce tuto :
$ sudo apt-get install daemontools
$ sudo apt-get install daemontools-run
$ sudo mkdir /etc/service/darkice
$ sudo chmod 2775 /etc/service/darkice
$ sudo touch /etc/service/darkice/run
$ sudo nano /etc/service/darkice/run
Et ajouter les lignes suivantes :
#!/bin/sh
echo Running service
exec darkice
Une dernière commande dans le terminal :
$ sudo chmod 755 /etc/service/darkice/run
Bon essai à tous et n’hésitez pas à commenter cet article si tout fonctionne ou si vous rencontrez des problèmes.

9 réflexions au sujet de “[Tuto] Raspberry Pi et Darkice pour le streaming audio”

  1. Bonjour,
    J’ai lu vos 2 super articles pour le raspberry pi !
    Par contre je me demandais pour une webradio quotidienne, le raspberry peut tenir sans problème ou la ressource peut vite saturé ?

    Cdt

    Répondre
    • Bonjour,
      Pour les tests, j’ai laissé tourner un Raspberry pi avec Darkice pendant 7 jours, 24h sur 24 sans aucun problème.
      J’ai actuellement un Raspberry pi qui tourne avec Liquidsoap depuis 10 jours. Bon test

      Répondre
        • Je viens de tester ton tuto, il me semble j’ai un pb avec la lib pour encoder le OGG : DarkIce: VorbisLibEncoder.cpp:150: vorbis lib opening underlying sink error [0]

          Je suis en train de chercher la solution 😉

          Répondre
  2. Hello !
    merci pour tes tuto, simple est efficace !

    Je souhaiterai créer une radio web, dc avec une liste de mp3 a diffuser en streaming sur le net.
    Parcontre je ne comprends pas ou mets t on les fichiers sources (MP3) ?

    en gros je voudrais créer une programmation musical et la diffuser en streaming sur le net.
    Que faut il utiliser pour faire des playslists?

    Merci !

    Répondre
    • Bonjour,
      En effet le tuto explique comment diffuser un flux audio.
      Ce flux audio est capté depuis la sortie de la console.
      Tout dépend de ce que vous voulez faire. Si vous souhaitez avoir un seul logiciel qui gère tout, vous pouvez regarder du coté de Liquidsoap.

      Répondre
  3. Hello !

    Je viens de tester et valider l’installation du Boot Start sur Debian 12, c’est parfait au démarrage concernant Darkice.

    Chez moi, le son provient d’un automate sous Windows connecté via une table de mixage Xenyx1204USB, qui renvoit ensuite sur l’entrée micro de mon Debian 12, entrée micro quasiment non amplifiée en entrée.

    Comme config de diffusion, j’ai un serveur icecast2 qui tourne sur un VPS OVH pour le moment.

    Jusque là tout est parfait ! Je bute simplement sur l’envoi des metadata vers icecast2 depuis darkice.

    Si toutefois quelqu’un a une idée …. je suis preneur (en dehors de l’utilisation de Butt je précise).

    Merci à vous !

    Répondre

Laisser un commentaire