...
- Contrainte vis-à-vis de Pod : nous ne souhaitons plus utiliser l'ancien module BBB de Pod, qui est amené à disparaître rapidement.
- Contrainte de l'API BBB : les participants et modérateurs ne sont disponibles que lorsque la session BBB est en cours. Une fois arrêtée, l'information n'y est plus dans BBB. Nous n'avons alors ces informations que dans le client BBB, à savoir Pod ou Moodle (ou Greenlight...).
- Contrainte BBB : par défaut, il est possible de reconstruire un enregistrement BBB (typiquement pour avoir l'enregistrement au format vidéo) que si les fichiers raw sont encore présents. Par défaut, ces fichiers raw sont supprimés au bout de 14 jours. On ne peut alors baser la solution sur la reconstruction des enregistrements.
Solution apportée
L'idée est de se baser sur :
- le système de revendication des enregistrements de Pod,
- le système d'import des vidéos externes pour y ajouter la possibilité de convertir des enregistrements BBB, de type présentation, en vidéo (via le plugin bbb-recorder, cf. ci-dessous),
- un script de migration, qui offre plusieurs possibilités.
Info | ||
---|---|---|
| ||
Cette solution repose totalement sur Pod et n'impacte en rien BigBlueButton. Aucune modification n'est à réaliser côté BigBlueButton. |
Ce script de migration est configurable et offre plusieurs possibilités, à savoir:
- 1° possibilité, pour ceux qui ont peu d'enregistrements à récupérer
Ce script va convertir les présentations, de l'ancienne architecture BBB, en fichiers vidéo (comme précédemment, via le plugin bbb-recorder) et positionner ces fichiers dans le répertoire pour la Revendication des enregistrements.
Bien sûr, s'il y a déjà des présentations en vidéo, le fichier vidéo sera directement copié.
- 2° possibilité, pour ceux qui ont beaucoup d'enregistrements à récupérer
L'idée est de laisser le temps aux usagers de choisir par eux-mêmes les enregistrements qu'ils souhaitent conserver (il n'est pas possible et utile de tout convertir).
Pour cela, il faudra laisser l'ancien serveur BBB/Scalelite ouvert au moins pendant quelques mois (juste pour accéder aux enregistrements).
Côté script, si besoin, il faudra un accès à la base de données de Moodle pour savoir qui a réalisé quoi.
Ainsi, pour chaque enregistrement BBB, le script va créer une ligne dans Mes vidéos externes, de type BigBlueButton, pour les modérateurs (qui seront créés si besoin dans la base de Pod).
Ils pourront alors par eux-mêmes importer ces enregistrements dans Pod.
Au cas où, si des enregistrements ne sont pas identifiables, ils seront associés à un administrateur (à paramétrer dans le script).
De plus, si l'accès à la base de Moodle le permet, un message d'information sera positionné directement dans Moodle, au niveau des sessions BBB concernées.
Le script est prévu pour être paramétrable, avec possibilité de gérer un certain nombre d'enregistrements et de pouvoir le tester avant (utilisation d'un mode dry).
Architecture de la solution
Plugin bbb-recorder
Pré-requis
...
Pour convertir les playback présentation de BBB, je me suis basé sur le projet Github 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.
Si besoin, ce plugin permet également une diffusion en direct (flux RTMP) d'un cours BigBlueButton.
Info |
---|
Ce plugin bbb-recorder avait déjà été utilisé pour l'ancien système, dans Pod v2 (cf. https://www.esup-portail.org/wiki/x/AgCBNg) et a été utilisé à de nombreuses reprises avec succès. |
Fonctionnement de bbb-recorder
Le fait d'exécuter le script bbb-recorder réalise les étapes suivantes :
- Lance un navigateur Chrome en arrière-plan,
- Chrome visite le lien - correspondant à la présentation Web BigBlueButton - fourni,
- Il effectue l'enregistrement d'écran sous la forme d'un fichier vidéo.
Installation de bbb-recorder sur les serveurs d'encodage
Il est nécessaire d'installer bbb-recorder sur les serveurs d'encodage.
La documentation de référence est accessible ici : https://github.com/jibon57/bbb-recorder
Pour ma part, sur les serveurs Ubuntu 11, voici ce qui a été réalisé.
Installation de bbb-recorder sur Ubuntu 11
Ce plugin n'a pas besoin d'être installé sur un serveur BigBlueButton.
Installation de Chrome et des pré-requis
Bloc de code | ||||
---|---|---|---|---|
| ||||
pod@test:~/$ sudo -i
root@test:~/$ apt install xvfb
root@test:~/$ curl -sS -o - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add
root@test:~/$ echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google-chrome.list
root@test:~/$ apt-get -y update
root@test:~/$ apt-get -y install google-chrome-stable |
Étant un serveur d'encodage, je considère que ffmpeg est déjà installé. Si besoin, il est nécessaire d'installer ffmpeg.
Installation effective
Voici l'installation pour un utilisateur pod.
Bloc de code | ||||
---|---|---|---|---|
| ||||
pod@test:~/$ cd ~
pod@test:~/$ git clone https://github.com/jibon57/bbb-recorder
pod@test:~/$ cd bbb-recorder
pod@test:~/bbb-recorder/$ npm install --ignore-scripts
pod@test:~/bbb-recorder/$ cp .env.example .env |
Gestion du répertoire contenant les vidéos : dans mon cas /data/www/pod/bbb-recorder et du répertoire de logs /data/www/pod/bbb-recorder/logs.
Bloc de code | ||||
---|---|---|---|---|
| ||||
pod@test:~/bbb-recorder/$ mkdir /data/www/pod/bbb-recorder
pod@test:~/bbb-recorder/$ mkdir /data/www/pod/bbb-recorder/logs |
Avertissement |
---|
Si bbb-recorder n'a pas été installé avec le bon utilisateur (pod), les fichiers vidéos générés ne seront sûrement pas accessibles par l'utilisateur Pod et ne pourront alors être encodés par les serveurs d'encodage. Dans les faits, cela se traduit par un 1° encodage réussi : la présentation Web de BBB sera convertie en fichier vidéo, mais ce fichier vidéo ne sera pas accessible à Pod et ne pourra être converti en vidéo Pod. |
Paramétrage
- Édition du fichier de configuration ~/bbb-recorder/.env pour paramétrer le RTMP (inutile ici) et surtout le répertoire des vidéos.
Bloc de code | ||||
---|---|---|---|---|
| ||||
{
"rtmpUrl": "rtmp://xxxxxxxx:xxxxxxxxxx@xxxxx.umontpellier.fr:1935/live/stream",
"ffmpegServer": "ws://localhost",
"ffmpegServerPort": 4000,
"auth": "xxxx",
"copyToPath": "/data/www/pod/bbb-recorder"
} |
- Si besoin, réaliser le paramétrage dans le fichier examples/index.js (pour réaliser un live ou enregistrer en direct une Web conférence) :
Bloc de code | ||
---|---|---|
| ||
const BBBUrl = "https://xxxx.umontpellier.fr/bigbluebutton/",
BBBSalt = "xxxxxxxxxxxxxxxxxxxx",
joinName = "recorder"; |
- Si vous le souhaitez, vous pouvez configurer le bitrate pour contrôler la qualité de la vidéo exportée en ajustant la propriété videoBitsPerSecond dans background.js.
Avertissement | ||
---|---|---|
| ||
Il faut bien penser que bbb-recorder utilise un répertoire temporaire pour générer une vidéo, avant que celle-ci ne soit copiée dans le répertoire configurée (cf. copyToPath). Ce répertoire temporaire correspond à ../Downloads. Ainsi, dans le cas d'une installation dans le home directory de l'utilisateur pod, le répertoire temporaire créé et utilisé par bbb-recorder est /home/pod/Downloads. Il est nécessaire qu'un espace de stockage suffisant soit alors prévu. |
Paramétrage
Configuration dans Pod
Script migrate_bbb_recordings
...