OpenOB – Liaison IP par Raspberry Pi

On a régulièrement besoin de pouvoir transmettre du son d’un point A à un point B, lorsque l’on fait un plateau extérieur ou pour relier le studio au site de l’émetteur, le tout avec un temps de délais le plus faible possible. Pour cela vous pouvez utiliser deux Raspberry Pi avec des cartes sons externes et le logiciel OpenOB.

Pour ce tutoriel, j’ai utilisé le matériel suivant :

Attention, le tutoriel est à suivre en partant d’une installation « fraîche » de Raspbian Stretch Lite

OpenOB – Open Audio over IP for Broadcasters

OpenOB est un logiciel audio sur IP conçu pour les broadcasters, les techniciens radio et les intégrateurs systèmes. Le logiciel a été conçu et développé par James Harrison.

Le but du projet est de fournir un cadre simple pour configurer et gérer des liaisons à faible délai audio entre les appareils sur des réseaux IP standard, avec une API de programmation conviviale pour une intégration facile dans d’autres projets.

Source :

Je tenais avant tout à remercier Clod Y-Us pour avoir partager en commentaire sur la page facebook le fait de pouvoir réaliser des liaisons via OpenOB ainsi que Casa36 pour son tuto sur radios-fr.com et ses échanges en messages privés.

Installation :

Nous commençons par mettre à jour le RPI :

$ sudo apt-get update && sudo apt-get -y upgrade && sudo apt-get -y dist-upgrade

Puis on installe les paquets nécessaires pour OpenOB :

$ sudo apt-get -y install python-gst-1.0 gstreamer1.0-plugins-ugly gstreamer1.0-tools gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-alsa python-gobject python-redis redis-server python-pip

Il faut maintenant configurer le serveur Redis ( l’installation et la configuration de redis-server n’est nécessaire que sur le recepteur ) :

$ sudo sed -i.bak 's/bind 127.*/bind 0.0.0.0/' /etc/redis/redis.conf && sudo service redis-server restart 

Nous pouvons maintenant installer OpenOB :

$ sudo pip install OpenOB

Réception :

Il faut d’abord lancer la machine qui doit recevoir le signal. La commande se compose ainsi : openob « IP de la machine qui émet » « nom de la machine qui reçoit » « nom de la liaison » rx

Nom de la machine qui reçoit : On peut mettre ce que l’on veut, dans l’exemple, j’ai indiqué « recepteur »

Nom de la liaison : On peut mettre ce que l’on veut, dans l’exemple, j’ai indiqué « transmission ». Attention a bien mettre le même nom sur les deux machines

$ openob 192.168.1.109 recepteur transmission rx -a alsa -d hw:1,0 

Emission :

Nous pouvons maintenant lancer la commande sur le RPI qui diffusera. La commande se compose ainsi : openob « IP de la machine qui émet  » « nom de la machine qui émet » « nom de la liaison » tx « IP de la machine qui reçoit »

  • IP de la machine qui émet : 192.168.1.109 (cette IP est a modifier en fonction de votre configuration)
  • Nom de la machine qui émet  : On peut mettre ce que l’on veut, dans l’exemple, j’ai indiqué « emetteur »
  • Nom de la liaison : j’ai indiqué « transmission », comme sur le RPI qui reçoit.
$ openob 192.168.1.109 emetteur transmission tx 192.168.1.161

La commande me renvoie l’erreur suivante :

WARNING - Waiting for audio interface/caps

Nous allons lancer la commande arecord -l pour faire un point sur la carte son que l’on souhaite utiliser :

**** 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

Dans mon cas, j’utilise une carte son externe USB. Il faut ajouter dans la commande une information pour préciser quelle carte on veut utiliser : hw:1,0. Ce qui nous donne :

$ openob 192.168.1.109 emetteur transmission tx 192.168.1.161 -d hw:1,0

Erreur ! ça ne fonctionne pas, il semble y avoir un problème avec Alsa :

AL lib: (WW) alc_initconfig: Failed to initialize backend "pulse"
AL lib: (EE) alsa_open_capture: Could not open capture device 'default': No such file or directory

On ajoute « -a alsa » dans la commande :

$ openob 192.168.1.109 emetteur transmission tx 192.168.1.161 -a alsa -d hw:1,0 

Victoire ! Tout fonctionne, le son sort du RPI qui reçoit.