| Sommaire |
|---|
| Avertissement |
|---|
| Cette documentation ne concerne que la future version de Pod v2.8, prévue fin février 2021. |
Contexte et solution apportée
...
Architecture de la solution
Choix du plugin permettant la diffusion de la session BigBlueButton en direct
Pour diffuser une session BigBlueButton en direct, certains plugins existent déjà sur Github; il ne paraît pas raisonnable de redévelopper un tel système.
Pour arriver à faire mon choix, j'ai testé les 2 solutions suivantes :
- bbb-recorder (https://github.com/jibon57/bbb-recorder) : un plugin, indépendant de BigBlueButton, qui permet de convertir - via un script - une présentation Web BigBlueButton en fichier vidéo et qui permet également une diffusion en direct (flux RTMP) d'un cours BigBlueButton.
- BigBlueButton-liveStreaming (https://github.com/aau-zid/BigBlueButton-liveStreaming) : un plugin, indépendant de BigBlueButton, permettant de publier en live (via RTMP) une session BigBlueButton et de l'enregistrer.
Au final, voici ce qui est ressorti de mes tests.
| bbb-recorder | BigBlueButton-liveStreaming | |
|---|---|---|
| Exporte un cours BBB en direct live | ||
| Enregistre un cours BBB en vidéo | format webm, mp4 | peut enregistré le cours qu'il publie en live au format mkv |
| Indépendance vis-à-vis de BigBlueButton | peut-être installé sur n'importe quel serveur | peut-être installé sur n'importe quel serveur |
| Contenu de la vidéo finale | présentation audio vidéo partage d'écran chat whiteboard | présentation audio vidéo partage d'écran chat whiteboard |
| Possibilité de chat depuis la page de direct avec BBB | ||
| Possibilité de faire plusieurs streams sur une même VM | ||
| Technologies | NodeJS, xvfb, Chrome, ffmpeg, shell | Docker, python, xvfb, ffmpeg, shell |
| Mise à jour régulière | ||
| Notion de charge |
Le fichier vidéo fait entre 2 et 4Mo par minute, en webm ou mp4 | 1 stream nécessite 4-6 vCPU + 4 Go RAM le fichier vidéo fait ~19Mo par minute, en mkv |
Aux vues des besoins, et en particulier suite à la possibilité d'ajouter un tchat public à la page de direct, j'ai alors choisi BigBlueButton-liveStreamong comme solution pour la diffusion de sessions BigBlueButton en direct.
Installation et configuration
Prérequis
Techniquement, la solution repose sur :
- Le projet Github BigBlueButton-liveStreaming: installé sur les serveurs bbb-pod-live (sous la forme de containers Docker).
https://github.com/aau-zid/BigBlueButton-liveStreaming - Un serveur de streaming pour la publication RTMP reposant sur RTMP Nginx.
- Le système existant de publication des présentations Web de BigBlueButton vers Pod (CRON job, plugin BBB).
- De nouvelles API REST pour Pod.
- Un script PHP (CRON job) pour le démarrage/arrêt des directs, création/suppression des diffuseurs…
- Totalement indépendant des serveurs de Pod et de BigBlueButton.
- Peut être installé sur des serveurs spécifiques bbb-pod-live (load balancing simpliste).
- Ce script PHP peut gérer plusieurs instances de BigBlueButton-liveStreaming.