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 :

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.

J’ai tout d’abord souhaité suivre le tutoriel « officiel » pour installer OpenOB sur le Raspberry Pi 3 mais j’ai rapidement été bloqué et en particulier sur l’installation de gstreamer0.10-ffmpeg

Package gstreamer0.10-ffmpeg is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source

Après quelques recherches sur internet, j’ai suivi les informations de ces deux liens :

http://lists.talkunafraid.co.uk/pipermail/openob-users/2016-May/000384.html

http://www.radios-fr.com/topic/18621-tuto-liaison-studio-%C3%A9metteur-avec-des-raspberrypi/

Il ne semble pas nécessaire d’installer « gstreamer0.10-ffmpeg » pour obtenir un bon fonctionnement d’OpenOB.

Installation :

Nous commençons par mettre à jour le RPI :

$ sudo apt-get update
$ sudo apt-get upgrade

Puis on installe toute une série de paquets nécessaires pour OpenOB :

$ sudo apt-get install python-gst0.10 python-setuptools gstreamer0.10-plugins-base gstreamer0.10-plugins-bad gstreamer0.10-plugins-good gstreamer0.10-plugins-ugly gstreamer0.10-tools python-gobject python-gobject-2 gstreamer0.10-alsa htop iperf iftop mtr opus-tools redis-server alsa-utils screen build-essential

Il faut maintenant configurer le serveur Redis :

$ sudo nano /etc/redis/redis.conf

Recherchez la ligne sur laquelle figure « bind 127.0.0.0 » et remplacez la par « bind 0.0.0.0 »

Ctrl+O pour enregistrer puis Ctrl+X pour quitter et on redémarre le serveur :

$ sudo service redis-server restart

Nous pouvons maintenant installer OpenOB :

$ sudo easy_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.100 recepteur transmission rx

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 »

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.100 emetteur transmission tx 192.168.1.7

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.100 emetteur transmission tx 192.168.1.7 -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

Direction la mailing-list d’OpenOB pour trouver la solution :
http://lists.talkunafraid.co.uk/pipermail/openob-users/2015-January/000255.html

On ajoute « -a alsa » dans la commande :

$ openob 192.168.1.100 emetteur transmission tx 192.168.1.7 -a alsa -d hw:1,0

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

Attention : si vous utilisez une carte son externe (ce que je vous conseille) il y a de forte chance que vous soyez obliger d’ajouter également sur le RPI configuré en récepteur les informations supplémentaires pour le choix de la carte et pour Alsa. Vous pouvez également utilisez un pc avec Debian pour la réception. Si ce dernier tourne sous Jessie, il faudra suivre ce tuto plutôt que l’officiel car le paquet « gstreamer0.10-ffmpeg » n’est ni disponible, ni utile.

9 thoughts on “OpenOB – Liaison IP par Raspberry Pi

  1. Salut Lyonel,
    J’ai créé une GUI pour openob, il permet de déployer un instreamer/outstreamer facilement sur des Raspberry et de tout gérer via une interface web. Une sorte de Barix pour quelques euros en soit 😉
    Les captures d’écran:
    https://github.com/mickaelmonsieur/openob-gui/wiki
    Je suis disponible en consultance pour les radios qui seraient intéressées de déployer la solution. (pour cela passer par mon site perso : http://www.mickael.be)
  2. Si tu as des questions n’hésites pas.
    Perso ma config c’est:
    2x Rasbperry Pi, un 1 et un 3 model B, le 1 fait le player et le 3/B l’encodeur.
    2x Behringer UCA222 (une vingtaine d’euros chez thomann)

    ça tourne depuis hier sans souci en opus 128kbit/s
    ce codec est vraiment idéal pour les STL, faible latence, bonne compression…

    • N’ayant qu’un Raspberry de disponible actuellement, je vais tester avec un pc sous debian et mon Raspberry disponible.
      Pour l’instant je rencontre un problème lors du « restart » de php5-fpm …

      J’utilise actuellement une carte son ESI U24 mais j’aimerais créer un boitier avec un raspberry et une carte Audio Injector avec E/S en XLR http://www.audioinjector.net/rpi-octo-hat + Open-OB + OpenOB-GUI

      • Salut,
        Tu ne devrais pas avoir de problème à faire tourner openob-gui sur une Debian amd64 -et non une raspbian lite- il y a juste un risque que la partie adressage ip static ne fonctionne pas si dhcpcd n’est pas installé, il l’est d’office sur raspbian.
        • Les premiers essais d’installation sur Debian ne sont pas concluant.
          J’ai corrigé mon erreur avec PHP5-fpm mais je n’arrive à accéder à la page http://ip-de-la-machine:80/ . Le navigateur reste sur la page d’information de nginx « Welcome to nginx on Debian! »

          Je suis peu à l’aise pour la configuration de départ de Raspbian via la console : clavier, wifi … Et j’aurai voulu essayer avec Pixel mais cela semble déconseillé. Puis-je savoir pourquoi ?

          • Tu as oublié de changer le root dans le fichier de conf nginx si tu vois la page par default. Ou de le redémarrer.
            Pixel est totalement déconseillé car cela alourdi le raspberry avec sa couche graphique totalement inutile et accapare des moments de CPU ce qui dégrade la qualité du flux sonore.
          • Je viens de modifier le root dans le fichier de config de nginx mais ça ne fonctionne toujours pas.
            J’ai ensuite testé avec mon Raspberry et là, ça a fonctionné du premier coup ! J’ai accéder à l’interface web. J’essaie la transmission audio très prochainement.
  3. Bonjour Mickael,
    Quel serait la commande à lancer sur Debian pour recevoir le signal envoyé depuis un raspberry avec OpenOB-gui ?
    $ openob IP.DU.RASPBERRY recepteur transmission rx ?

    Pour info, j’ai testé dans le sens inverse : Debian -> RPi et ça fonctionne avec :
    $ openob IP.DU.PC.DEBIAN emetteur transmission tx IP.DU.RASPBERRY

    Et si tu as besoin, je veux bien aider pour une version francophone 😉

Laisser un commentaire