mardi 5 septembre 2017

Créer une WebRadio avec AirTime & SHOUTcast sur Raspberry Pi 3 sous Raspbian Jessie



Cet article fait suite à l'article du 8 novembre 2012 "Comment créer sa WebRadio avec AirTime & SHOUTcast".

Airtime sur un Raspberry Pi est la plus petite station de radio du monde.
Airtime est un programme Opensource de gestion de radio sur internet en mode direct (aussi via ICEcast et ShoutCast) développé par SourceFabric.
Site officiel : https://www.sourcefabric.org/en/airtime/

Airtime permet:
- de gérer plusieurs flux différents: choix du Codec et de la qualité. Un même contenu peut être diffusé par exemple en mp3 et OGG Vobis,
- de gérer les rôles des utilisateurs,
- une utilisation facile grâce à une interface simplifiée avec gestion du calendrier de diffusion , playlist, etc ...
- le support des formats FLAC,WAV, AAC,MP3,
- le choix de l'entrée du flux: direct (micro) , playlist, re-diffusion d'un stream ami etc..
- l'upload automatique sur SoundCloud,
- la diffusion en plusieurs bandes passantes vers des serveurs relais Icecast ou Shoutcast,
- l'affichage des informations (Json) via les widgets sur des sites tiers.
- la localisation en 11 langues.


Avantages d'AirTime sur Raspberry Pi 3:

- Taille réduite de Raspberry Pi
- Silence absolu de fonctionnement du Rasberry Pi
- Consommation électrique minimum : 5V, 2,5A
- Le Raspberry Pi 3 embarque la Wifi, en natif, d'où le choix d'utilisation en Wifi ou RJ45.
- Possibilité de prise en main à distance si le RasPi est headless ( sans ecrann et clavier ) via Vnc, Xrdp ou Teamviewer  comme expliqué dans l'article "Contrôler à distance un Raspberry Pi 3 sous Raspbian Jessie avec VNC."
- Puissance du RaspPi 3 model B suffisante  pour faire tourner confortablement Raspbian Jessie et AirTime, l'utilisation du processeur ne dépasse jamais beaucoup plus de 30%, toutefois le Raspberry devra être entièrement dédié à cette tâche sous peine de saccades de la transmission  :

    Processeur ARMv7 Broadcom BCM2837 – 4 Cœurs – 64 bits
    Fréquence d’horloge de 1.2Ghz (+33% par rapport au Pi 2)
    Port Ethernet 10/100
    1GB RAM (toujours)
    WiFi intégré à la carte 802.11 b/g/n (BCM43438)
    Bluetooth Low Energy intégré à la carte (BCM43438)
    HDMI 1.3a

- Airtime, maintenu par SourceFabric, est Opensource et s'appuie sur des logiciels libres et solides : PHP (pear, amqplib, soundcloud php api , propel), Jquery, PostGrSql, mutagen, liquidsoap.
Airtime peut tourner sans trop de problèmes sous Debian, Rasbian et Ubuntu.

- Cout réduit du Raspberry Pi 3 : environ 30€

Inconvénients:

- Risque d'instabilités du RaspPi dues le plus souvent à une alimentation insuffisante 5V, 2.5A
- Attention aux traitement de son, particulièrement l'encodage en MP3 qui a tendances à être très gourmand en ressource et cela pourrait interrompre / saccader le stream.  Le moins gourmand en ressources processeur semblerait être le format FLAC ...mais ce format consomme beaucoup de bande passante.
- Le projet Opensource d'Airtime est un peu délaissé, et donc plus très à jour, ce qui implique quelques ajustements techniques lors de l'installation. D'autre part, Airtime nécessite une ancienne version de Raspbian : "Rasbian Jessie".

Principe du streaming audio via un serveur relai SHOUTcast ( ou ICEcast ) :


La version open source d'Airtime est très semblable à la version Airtime Pro sauf qu'elle possède une fonction supplémentaire que la version Pro n'a pas : la diffusion en live via une entrée micro.

1) Installation de Raspbian Jessie :

- Télécharger Raspbian Jessie : https://raspberry-pi.fr/telechargements/

- Depuis Windows par exemple, dézipper et copier sur votre carte microSD ( minumum 4Go, mais prévoir plus grand selon la taille de vos playlists à diffuser.

 - Inserrer la carte micro SD dans la framboise et brancher la sur une alimentation USB ( 5V , 2A ou 2.5A)

- Raspbian Jessie démarre:
login: pi / raspberry

- Régler la date et l'heure du système.

2) Installation de AirTime :

C'est là que les difficultés commencent, car la version "easy" de l'installateur d'Airtime ne fonctionne que sur l'architecture x86 et non sur ARM et la version 2.5.2 est complètement buguée !
Nous allons donc installer les sources de la version 2.5.1 d'Airtime ...

- D'abord mettre à jour votre système :

sudo apt-get update
sudo apt-get upgrade

- Puis rebooter votre système.
- Télécharger et extraire les sources suivantes:

wget https://github.com/sourcefabric/Airtime/archive/airtime-2.5.1-ga.tar.gz
tar -xvzf airtime-2.5.1-ga.tar.gz -C ~/

- Avant d’exécuter le script d'installation, faites les modifications suivantes:

Dans le fichier ~/airtime-airtime-2.5.1-ga/install_full/ubuntu/airtime-full-install

1) Commenter (mettre # en debut de chaque ligne) les lignes 49 et suivantes comme ci-dessous:

#if [ "$returncode" != "0" ]; then
# echo "deb http://apt.sourcefabric.org/ $codename main" >> /etc/apt/sources.list
#fi

2) Commenter (mettre # en debut de chaque ligne) les lignes 98 comme ci-dessous:

# apt-get -y --force-yes install sourcefabric-keyring 

3) Changer la ligne 72 :

if [ "$dist" = "Debian" ]; then
en
if [ "$dist" = "Raspbian" ]; then

4) Changer la ligne 136 :

if [ "$dist" = "Ubuntu" -a "$code" = "saucy" ]; then
en
if [ "$dist" = "Raspbian" ]; then

- Puis exécuter l'installation d'Airtime:

sudo ~/airtime-airtime-2.5.1-ga/install_full/debian/airtime-full-install

Si pendant l'installation on vous demande d'installer Icecast, dites "no".

Si tout s'est bien déroulé, vous devriez avoir une version en cours d’exécution d'Airtime 2.5.1
Exécuter Airtime depuis votre navigateur préféré, sur l'adresse ip de votre Raspberry.
Identifiant par défaut : admin / admin



3) (optionnel ) Changement de la source d'enregistrement si vous souhaitez utiliser le micro comme entrée :( Si vous souhaitez uniquement diffuser des fichiers de musique, les modifications suivantes sont inutiles)

Par défaut, Airtime utilise ecasound pour enregistrer à partir de la carte son par défaut. Cela signifie que l'on ne peut pas enregistrer des flux d'autres sources. Une correction simple consiste à modifier:

/usr/lib/airtime/pypo/bin/recorder.py (vers la ligne 91) avec :

# command = "ecasound -f:%s,%s,%s -i alsa -o %s,%s000 -t:%s" % \
# (ss, c, sr, filepath, br, length)
command = "/usr/bin/sox -t ogg http://localhost:8000/airtime.ogg -C6 %s trim 0 %s" % \
(filepath, length)

Puis on doit recompiler le script Python:

cd /usr/lib/airtime/pypo/bin/
sudo rm recorder.pyc
sudo python
import recorder.py

Ctr-d pour quitter ( s'il y a des messages d'alerte comme quoi il manque des fichiers, ignorer ces messages )

Puis redémarrer la framboise ,
et installer sox :

sudo apt-get install sox
sudo apt-get install libsox-fmt-all

Donc maintenant, si dans l'interface d'Airtime on switche le commutateur de source sur "Source Maitre", on diffuse depuis l'entrée microphone du Raspberry.


Si vous voulez enregistrer depuis une carte son, vous pouvez configurer quelquechose comme suivant:

/etc/init/icecastsource.conf:
description "Pipe soundcard input to icecast"

start on runlevel [2345]
stop on runlevel [!2345]

respawn

exec /usr/bin/sox -q -r 44100 -t alsa plughw:0,0 -t ogg -C6 - | /usr/bin/oggfwd -p -n "Studio" localhost 8000 hackme /master
post-stop exec sleep 10

Remarque: Si ce n'est pas déjà installé, vous devrez installer aussi oggfwd :
sudo apt-get install oggfwd

Vérifier que Airtime marche parfaitement :

sudo airtime-check-system


4) Paramétrage d'Airtime avec le serveur relai SHOUTcast :

Dans votre navigateur accédez à votre serveur local avec cette adresse:
http://localhost/ 

Pour la suite du paramétrage et utilisation d'Airtime, voir l'article :
 https://informatique-beaujolaise.blogspot.fr/2012/11/comment-creer-sa-propre-web-radio.html




Aucun commentaire:

Enregistrer un commentaire