1. Introduction
L'Université Sorbonne Paris Cité (USPC) dispose d'une plateforme dédiée à la recherche. Cette plateforme nommée CIRRUS [1] repose essentiellement sur des logiciels libres. Les chercheurs de l'USPC ainsi que leurs collaborateurs peuvent y accéder. La population est donc éclatée géographiquement. Nous devons assurer un service de formation autour de cette plateforme. La question s'est donc posée de savoir comment retransmettre une session de formation accompagnée d'un diaporama et d'un terminal pour les démonstrations en temps réel. Cette retransmission doit aussi proposer un minimum d'interactivité aux personnes suivant la retransmission afin de pouvoir poser des questions. Nous souhaitons également que le client n'ait rien à installer sur sa machine (client lourd, webcam, etc.).
2. État de l'art
La diffusion d'une formation en temps réel est proposée par de multiples outils. Si votre contenu est bien défini, il est nécessaire que sa diffusion le soit aussi, afin d'optimiser au mieux votre propos. Petit tour d'horizon des capacités et limites des différents outils que l'on peut trouver.
Wirecast :
Si vous êtes une entreprise, c'est la solution professionnelle propriétaire qui s'impose. Une application à la prise en main intuitive. L'interface est complète et vous offre le choix de la qualité et du débit de votre vidéo. Ce logiciel est approuvé et recommandé par YouTube dans son « mode d'emploi du streaming ». Pour un usage récréatif, son prix représente un frein. Si vous êtes un fervent défenseur des logiciels libres, le côté fermé du logiciel empêchant toute substitution d'une librairie multimédia par une autre peut être bloquant.
Google Hangout :
L'Hangout possède l'énorme avantage d'être une véritable application full web dans le sens où il ne repose pas sur une sandbox quelconque type JRE. La création d'un compte étant réalisable en quelques clics, à priori pas de faux pas pour Hangout. C'est un outil gratuit à la mise en place universelle. Les deux reproches que nous pourrions adresser à Hangout sont sa qualité d'images très moyenne et l'impossibilité de choisir son débit. Si une image pixelisée et une longueur de trame ne sont pas un souci, jetez-vous dessus, sinon fuyez !
Xsplit Broadcaster :
Amis gamers, vous avez forcément entendu parler de Xsplit, c'est le logiciel propriétaire le plus utilisé pour diffuser vos parties en ligne. Son interface n'est pas intuitive et il faut un certain temps d'adaptation pour le prendre en main, néanmoins toutes les options de diffusion sont présentes : choix des sources, du débit, possibilités d'effets vidéos, d'intégration d'image.. Un logiciel complet, mais gourmand pour le processeur, il est déconseillé d'effectuer d'autres tâches en fond. Un dernier point, son efficacité a un prix.
Les MOOCs :
Le contexte formation de l'outil de diffusion nous entraîne à parler des MOOCs (Massive Open Online Courses). Ce sont des formations en ligne ouvertes visibles sous différentes formes : capsule vidéo, e-learning, classe inversée, etc. L'exemple de live diffusion que nous allons proposer dans cet article est une formation à distance. De ce fait on est en droit de se demander pourquoi ne pas mettre en place un MOOC sous la forme d'une vidéo pédagogique postée sur une plateforme (FUN, Moodle, etc.).
Un MOOC n'est pas un contenu unique, mais s'organise en une suite de vidéos cohérentes entre elles autour d'un sujet ciblé. Cette cohérence est assurée par un travail de scénarisation, de choix du support et une réflexion sur les objectifs pédagogiques et numériques à atteindre. Le MOOC est un cours à part entière. Filmer une conférence et la diffuser ne peut donc pas s'appeler un MOOC, tant le travail de réflexion, d'écriture et de chapitrage (par chapitrage on entendra une vidéo et un certain nombre d'objectifs à atteindre pour l'apprenant) n'est pas optimal.
3. Présentation d'OBS
Open Broadcaster Software (OBS) est un logiciel libre et open source qui va vous permettre de diffuser en temps réel vos vidéos sur la toile. Avant d'entrer plus en détail sur les caractéristiques du programme, faisons un court arrêt image sur la diffusion de contenus de multimédias, sa définition et son mode de fonctionnement, afin de comprendre toute la chaîne de diffusion internet.
La diffusion en temps réel vous permet de lire et/ou écouter des fichiers en instantané. Via un simple clic sur le bouton « play », l'utilisateur télécharge, sans s'en rendre compte, quelques secondes de vidéos mises en mémoire tampon. Cette mémoire tampon est volatile, a contrario d'un téléchargement où le fichier est conservé physiquement sur votre disque dur. Ainsi la vidéo se charge au fur et à mesure de la lecture et les données disparaissent dès que celle-ci est achevée.
C'est le principe de fonctionnement des plateformes telles que YouTube, Dailymotion et des sites de replay entre autres.
OBS diffuse en temps réel ou non un fichier audio et/ou vidéo. On va ici s'intéresser à la diffusion en temps réel cela s'apparente à un direct en télévision. L'avantage du live est l'interaction possible avec les internautes, ils peuvent poser des questions et vous leur répondez directement.
Partons du postulat suivant : vous souhaitez filmer une conférence (masterclass, spectacle, webradio/TV, gameplay…). Malheureusement, une partie de votre audimat ne peut se déplacer jusqu'à vous. Il vous suffit à l'aide d'un simple ordinateur, une webcam, OBS et un accès à une chaîne YouTube (ou autre, on reviendra plus tard dessus) de diffuser votre conférence en temps réel.
La webcam va capturer l'image de la conférence (on privilégiera, si possible, une carte son pour l'audio). OBS va entrer en contact avec votre plateforme de diffusion pour envoyer le flux multimédia et YouTube diffusera votre conférence en quasi temps réel, un léger de décalage de 30 secondes à 1 minute est à prévoir. Ainsi vos internautes auront tout loisir de vous interrompre via le tchat en direct et les commentaires.
À votre vidéo, il est possible d'ajouter plusieurs sources allant de diaporamas à un jingle audio pour illustrer au mieux votre propos.
4. Intégration d'OBS
4.1 Interactions avec l’écosystème
OBS propose de configurer deux choses : des sources et des cibles de diffusion. Les sources sont multiples, il peut s'agir de périphériques matériels : micro, webcam, etc. Les destinations peuvent être un simple fichier (enregistrement au format flv, mkv, mov, avi, etc.) et/ou une plateforme de diffusion (Twitch, YouTube, etc.). On notera qu'une source peut aussi être la cible d'un autre système de diffusion.
Fig. 1 : Écosystème d'OBS.
4.2 Installation
Dans cet article, nous utilisons Ubuntu 15.10. L'installation peut se faire à partir de paquets mis à disposition sur un dépôt opéré par les développeurs d'OBS ou à partir des sources [2]. Nous allons employer la première méthode, plus simple au niveau installation et mises à jour (intégration au système de gestion de paquets). L'installation à partir des sources n'est utile que dans deux cas :
- pas de paquets disponibles pour la distribution ;
- utilisation de versions particulières d'une ou plusieurs des trois librairie(s) utilisée(s) par OBS, à savoir la librairie ffmpeg (enregistrement, lecture, diffusion de contenus ou conversion d'un format à un autre), la librairie v4l (API générique pour interagir avec les périphériques matériels) et la librairie x264 (qui implémente la norme H264 ou MPEG-4, utilisée pour les DVD HD, Blu-ray, etc.).
L'installation se fait en trois temps. Il faut d'abord ajouter les dépôts au gestionnaire de paquets :
ngreneche@pc-regie:~$ sudo add-apt-repository ppa:obsproject/obs-studio
Et mettre à jour le cache :
ngreneche@pc-regie:~$ sudo apt-get update
Enfin, on peut installer le logiciel :
ngreneche@pc-regie:~$ sudo apt-get install obs-studio
Vous avez maintenant une installation d'OBS fonctionnelle.
5. Cas pratique
Comme mentionné en introduction, nous avons voulu utiliser OBS pour diffuser une formation. Cette formation mobilise deux personnes : une technicienne en régie et un formateur. La régisseuse doit orchestrer le passage d'une source à l'autre pendant la présentation. Nous avons donc deux machines : une machine « régie » manipulée par la régisseuse (IP : 192.168.100.254) sur laquelle tourne OBS et une autre « présentation » utilisée par le formateur (IP : 192.168.100.1). C'est donc la régisseuse qui va manipuler OBS pendant la session de formation. Elle commence par lancer le programme et tombe sur l'écran principal.
Fig. 2 : Écran principal d'OBS.
Depuis cet écran, nous pouvons configurer les sources (1) et les paramètres de la diffusion (2).
Les deux sources les plus élémentaires auxquelles on pense sont le couple caméra/micro. Commençons par la caméra. Depuis l’emplacement de configuration des sources, on sélectionne Périphérique de capture vidéo (V4L2) puis on valide avec OK. Nous arrivons sur l'écran de configuration de la caméra (figure 3). On valide la création de la source avec OK.
Fig. 3 : Configuration de la caméra.
Pour la configuration du micro, OBS s'appuie sur le service PulseAudio. PulseAudio s’intercale entre les applications (Rythmbox, OBS, etc.) et le matériel (carte son). Cette couche facilite l'accès des programmes aux pilotes des ressources sonores matérielles en proposant des primitives normalisées et un accès indépendant de chaque application aux ressources sonores. Pour ajouter la source micro, il faut accéder de nouveau à l'ajout d'une source et choisir Capture d'Audio Entrant PulseAudio. Nous arrivons sur l'écran de configuration du micro (figure 4).
Fig. 4 : Configuration du micro.
OBS prend nativement en charge la diffusion de documents en tant que source. Cependant pour un diaporama il faut exporter les diapositives une par une et les charger dans OBS. De plus, c'est la régisseuse qui sera en charge de passer d'une diapositive à l'autre en se synchronisant avec le formateur. C'est très lourd. Comme solution, nous proposons de diffuser le bureau du formateur vers la machine de régie.
Pour diffuser le bureau du formateur, nous allons utiliser ffmpeg sur sa machine :
ngreneche@pc-pres:~$ ffmpeg -f x11grab -s 1920x1080 -r 50 -i :0.0 -f mpegts udp://192.168.100.254:1234
ffmpeg version 2.7.6-0ubuntu0.15.10.1 Copyright (c) 2000-2016 the FFmpeg developers
built with gcc 5.2.1 (Ubuntu 5.2.1-22ubuntu2) 20151010
[Options de compilation]
libavutil 54. 27.100 / 54. 27.100
[...]
Input #0, x11grab, from ':0.0':
Duration: N/A, start: 1457950617.159592, bitrate: N/A
Stream #0:0: Video: rawvideo (BGR[0] / 0x524742), bgr0, 1920x1080, 50 fps, 50 tbr, 1000k tbn, 50 tbc
Output #0, mpegts, to 'udp://192.168.100.254:1234':
Metadata:
encoder : Lavf56.36.100
Stream #0:0: Video: mpeg2video, yuv420p, 1920x1080, q=2-31, 200 kb/s, 50 fps, 90k tbn, 50 tbc
Metadata:
encoder : Lavc56.41.100 mpeg2video
Stream mapping:
Stream #0:0 -> #0:0 (rawvideo (native) -> mpeg2video (native))
Press [q] to stop, [?] for help
frame= 23 fps=0.0 q=31.0 size= 500kB time=00:00:00.42 bitrate=9747.4kbits/frame= 35 fps=0.0 q=31.0 Lsize= 587kB time=00:00:00.68 bitrate=7071.0kbits/s
...
Cette commande définit une entrée et une sortie avec la syntaxe -f <entrée> -f <sortie>. L'entrée utilise le périphérique virtuel x11grab qui interagit avec le service x11 pour capturer tout ou une partie de l'écran (paramètre -s 1920x1080 qui ici définit l'intégralité de l'écran du PC présentation). Le paramètre -r correspond au framerate et -i au display courant [3]. La sortie est un flux vidéo MPEG-TS diffusé en UDP Unicast vers le port 1234 de l'IP 192.168.100.254 (soit le PC de régie).
Sur le PC de régie, il faut donc récupérer ce flux UDP. OBS est capable de prendre un tel flux directement en source. Pour ce faire, il faut partir de l'écran principal et aller sur la partie Sources (1), puis +, puis Source média. Ensuite, choisir Créer une nouvelle source. Nous allons la nommer « pc-pres ». À la validation, un nouvel écran apparaît.
Fig. 5 : Ajout d'une source UDP.
Il faut décocher Fichier local, entrer la cible de diffusion de l'instance ffmpeg de la machine de présentation udp://192.168.100.254:1234, préciser le format d'entrée mpegts et enfin cocher Utiliser le décodage matériel si possible. À la validation, cette nouvelle source devrait apparaître sur l'écran principal.
Le formateur peut maintenant utiliser les bureaux virtuels de l’environnement graphique Ubuntu pour avoir un bureau avec le diaporama en plein écran et un autre avec le terminal. La vie de la régisseuse en est grandement simplifiée !
Fig. 6 : Architecture de diffusion cible.
La connexion entre les deux machines « régie » et « présentation » étant actée, on va s'intéresser aux options qu'OBS propose.
Sur votre écran d'accueil dans Paramètres, un menu se découvre. Nous nous intéresserons ici aux paramètres Sortie et Flux.
Dans Sortie, deux modes sont proposés : Simple et Avancé. Pour une première prise en main, il n'est pas nécessaire de s'aventurer dans des configurations compliquées. Il vous faut juste régler votre débit vidéo et audio. Le débit est la quantité d'informations traitées par seconde pendant la lecture. Plus votre débit est élevé, plus la qualité du média son et/ou vidéo sera élevée, mais plus la quantité de données à traiter sera élevée. Si votre ordinateur n'est pas équipé d'accélération matérielle adossée au CPU, ce dernier risque de chauffer. Pour aider le diffuseur dans son aventure, YouTube a mis en place des recommandations qui, selon votre configuration, vous indiqueront les meilleurs réglages [4].
La diffusion en temps réel nécessite une plateforme de diffusion. Dans le paramètre Flux, le logiciel OBS vous propose en réglages de base « Twitch » dédié à la diffusion de jeux vidéos (ce qui nous intéresse peu ici). Afin de poursuivre l’exemple retenu depuis le début de cet article, nous allons diffuser notre flux avec YouTube.
Pour ce faire, n’hésitez pas à refaire un tour sur le guide d’utilisation de live diffusion que YouTube recommande [4]. En résumé, deux choix pour votre live : Diffusion immédiate ou Nouvel événement en direct. On retiendra ici la deuxième solution qui permet de programmer son événement afin de partager le lien de diffusion au plus grand nombre. Après avoir ouvert votre chaîne YouTube, cliquez sur Gestionnaire de vidéos et Événements en direct à droite. Après avoir rempli les informations générales : nom, date et heure, paramètres de confidentialité, etc. de votre future conférence, vous êtes officiellement à la tête de votre première diffusion. Faites un tour dans les paramètres avancés afin de modérer les commentaires du tchat en direct, le délai de diffusion, etc.
Il ne vous reste à présent qu'à copier/coller l’URL et le nom du flux YouTube dans OBS Flux > Serveur streaming personnalisé. Vous pourrez ainsi lancer le jour J, votre flux multimédia d'OBS vers l'infrastructure YouTube qui le diffusera aux spectateurs ayant le lien de diffusion.
Le dernier point consiste à gérer les questions et interventions éventuelles des spectateurs. Nous avons à disposition deux canaux : le tchat natif de YouTube et une adresse e-mail. La première solution est plus simple pour le spectateur, car il peut envoyer sa question directement depuis l'interface web sur laquelle il visionne la diffusion. Le problème est qu'il doit disposer d'un compte sur YouTube. La seconde solution moins simple pour l'utilisateur, nécessite un logiciel tiers, mais ne réclame pas de compte spécifique.
Conclusion
Open Broadcaster Software est un logiciel complet de diffusion : formation à distance, partie de jeux vidéos, conférence filmée, WebTV, etc. Cette application est un couteau suisse de la diffusion. L'interface extrêmement bien pensée est beaucoup plus commode à utiliser pour le non-informaticien que des outils CLI comme ffmpeg, même si les deux peuvent être combinés comme c'est le cas dans l'application pratique. On pourra regretter le manque d’interactivité dû au live streaming, qui tend à devenir la norme de ces prochaines années. Mais c’est surtout au frontal de diffusion final juste en face du spectateur de résoudre ce problème (contrainte d'avoir un compte YouTube pour interagir). OBS propose une interface pour ajouter des plugins (par exemple, un noise gate pour les entrées sonores) à destination des contributeurs éventuels. Utilisé en combinaison d'autres outils et d'une plateforme de diffusion conviviale, c'est un véritable atout pour mettre en place à peu de frais un événement à destination de spectateurs étalés aux quatre coins du globe… Sous réserve que le contenu soit à la mesure de l'infrastructure mise en place :-).
Références
[3] http://gerardnico.com/wiki/linux/display
[4] https://support.google.com/youtube/answer/2853702?hl=fr&ref_topic=6136989