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 :
- Raspberry Pi 3 Model B Quad Core CPU 1.2 GHz 1 Go RAM
- Alimentation Pour Raspberry Pi 3 Aukru Micro USB 5v 3000mA
- Carte Mémoire MicroSDHC SanDisk Ultra 16GB
- Carte son ESI U24 XL
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
**** 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
$ arecord -D plughw:1,0 temp.wav
$ aplay temp.wav
$ sudo alsamixer
$ sudo alsactl store
Darkice
$ 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
$ sudo cp /usr/share/doc/darkice/examples/darkice.cfg /etc/
$ sudo nano /etc/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
$ 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
#!/bin/sh
echo Running service
exec darkice
$ sudo chmod 755 /etc/service/darkice/run
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
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
Merci de ta réponse. Comme j’ai une presta pour faire une webradio je me demandais pourquoi ne pas mettre un RPI 😉
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 😉
Merci pour votre retour.
Je n’ai pas testé l’encodage OGG avec Darkice 🙁
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 !
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.
#Update pour Raspbian Stretch
$ 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 libjack-jackd2-0 libogg0 libvorbis0a libvorbisenc2
$ sudo dpkg -i darkice_1.0.1-999~mp3+1_armhf.deb
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 !