| Avertissement |
|---|
Cette documentation ne concerne que la version 2. 7.0 et supérieureX de Pod . |
Sommaire
Contexte et solution apportée
Contexte
Suite à la pandémie de COVID-19, il a été mis en place, à l'université de Montpellier, un système de classe virtuelle Open Source reposant sur BigBlueButton (BBB).
et non la version 3. X de Pod. Le module utilisé est supprimé de Pod depuis la version 3.8.2. D'autres fonctionnalités de Pod peuvent correspondre à vos besoins :
|
Sommaire
| Astuce | ||
|---|---|---|
| ||
En cas d'erreur du type : Error: Evaluation failed: TypeError: Cannot read properties of null (reading 'duration') A priori, en ajoutant une temporisation dans le script export.js de bbb-recorder, le problème ne se présente plus. En attendant une mise à jour de bbb-recorder, il peut-être nécessaire de modifier bbb-recorder/export.js et y ajouter à la ligne 125 : // Waiting for page loading D'ailleurs, un commit vient d'être fait dans bbb-recorder pour résoudre ce problème : cf. https://github.com/tdebatty/bbb-recorder/commit/46e7511f035904344a06fc9c346d3f9b8a34ccdf |
| Info | ||
|---|---|---|
| ||
Suite à la mise à jour de BigBlueButton ou de Scalelite, il peut arriver que les liens des enregistrements BigBlueButton changent de format. Pour gérer ce changement de format vis-à-vis de ce système de publication vers Pod, il est nécessaire de réaliser les modifications suivantes :
|
| Info | ||
|---|---|---|
| ||
Cela n'a rien à voir avec le système de publication pour Pod, mais si vous avez un Scalelite et que, parfois, certains enregistrements n'apparaissent pas aux utilisateurs, cela peut provenir de Scalelite. Après recherche, dans mon cas, il s'avérait que certains enregistrements restaient bloqués, au format .tar, dans le répertoire spool de Scalelite (/mnt/scalelite-recordings/var/bigbluebutton/spool/) et n'étaient alors jamais publiés. Au final, en mettant à jour la base de données de Scalelite et en le redémarrant, tout est rentré dans l'ordre. Voici les commandes utilisées : sudo docker exec -t scalelite-api bundle exec rake db:migrate |
Contexte et solution apportée
Contexte
Suite à la pandémie de COVID-19, il a été mis en place, à l'université de Montpellier, un système de classe virtuelle Open Source reposant sur BigBlueButton (BBB).
Pour informations, BigBlueButton (https://bigbluebutton.org/) est un outil de Pour informations, BigBlueButton (https://bigbluebutton.org/) est un outil de classe virtuelle ayant les fonctionnalités suivantes :
...
| Avertissement | ||
|---|---|---|
| ||
Les informations concernant les modérateurs dans BigBlueButton dépendent du client BBB utilisé : Greenlight ou le plugin mod_bigbluebuttonbn pour Moodle. Le système réalisé n'a été testé qu'avec le plugin mod_bigbluebuttonbn pour Moodle (CASifié, donc les données proviennent de notre annuaire LDAP); cela signifie que les modérateurs sont définis - dans mon cas - sous la forme "Prenom Nom". Il est possible de paramétrer ce format, via le paramètre BBB_USERNAME_FORMAT (à partir de la version 2.7.2). A l'heure actuelle, les formats "Prenom Nom" ou "Nom Prenom" peuvent être gérés via ce paramétrage. |
...
| bbb-recorder | bbb-download | BigBlueButton-liveStreaming | |
|---|---|---|---|
| Enregistre un cours BBB en vidéo | format webm, mp4 | peut enregistré le cours qu'il publie en live au format mkv | |
| Exporte un cours BBB en direct live | |||
| Enregistre un cours en temps réel | |||
| 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 | |||
| Technologies | NodeJS, xvfb, Chrome, ffmpeg, shell | Python, ruby, ffmpeg, shell | Docker, python, xvfb, ffmpeg, shell |
| Mise à jour régulière | Dernière mise à jour en 2018 | ||
| Notion de charge |
| ||
| Commentaires | Facilement modifiable (scripts JS pour NodeJS) | Complètement intégré à BBB (une fois un cours enregistré terminé, une vidéo - en plus de la présentation - est générée) | Il faut bien respecter l'ordre de démarrage (session BBB avant liveStreaming). |
| Remarques sur mes tests | Peut également publier en live le cours (publication RTMP). |
...
Une fois bbb-recorder installé sur les différents serveurs d'encodage, il reste à configurer le plugin bbb directement dans Pod, via l'édition de fichier custom/settings_local.py (sur les encodeurs et sur le frontal) :
| Bloc de code | ||||
|---|---|---|---|---|
| ||||
##
# BigBlueButton settings
#
# Use of BigBlueButton
USE_BBB = True
# Directory of bbb-recorder plugin (see documentation https://github.com/jibon57/bbb-recorder)
# bbb-recorder must be installed in this directory, on all encoding servers
# bbb-recorder create a directory 'homedir'/Downloads that needs disk space
DEFAULT_BBB_PLUGIN = '/home/%userpod%/bbb-recorder/'
# Directory that will contain the video files generated by bbb-recorder
DEFAULT_BBB_PATH = '/data/www/%userpod%/bbb-recorder/'
# BigBlueButton or Scalelite server URL, where BBB Web presentation and API are
BBB_SERVER_URL = 'https://bbb.univ.fr/'
# BigBlueButton key or Scalelite LOADBALANCER_SECRET
BBB_SECRET_KEY = 'xxxxxxxxxxxxxxxxxxxxxxxx'
# Username format in BBB
BBB_USERNAME_FORMAT = 'first_name last_name'
# Type of the generated video by default
DEFAULT_BBB_TYPE_ID = 1
# Number of days before removal the meetings (and associated users) not already published
# To not remove old meetings, set 0 value
BBB_NUMBER_DAYS_BEFORE_DELETE = 0 |
...
| Bloc de code | ||||
|---|---|---|---|---|
| ||||
%userpod%@ts-sun:~/$ mkdir /data/www/%userpod%/bbb-recorder %userpod%@ts-sun:~/$ mkdir /data/www/%userpod%/bbb-recorder/logs %userpod%@ts-sun:~/$ mkdirchown %userpod%:www-data /data/www/%userpod%/bbb-recorder/logs # Ou, selon l'environnement : %userpod%@ts-sun:~/$ chown %userpod%:nginx /data/www/%userpod%/bbb-recorder/logs |
...
Via l'administration de Pod, vous aurez accès à un nouveau menu, BBB, qui contient les options Sessions et Utilisateurs.
Les sessions BigBlueButton
Voici l'interface de listing des sessions réalisées dans BigBlueButton, et récupérées via le job :
Il est possible de modifier les données si nécessaire.
...
| title | Exploitation |
|---|
.
Les sessions BigBlueButton
Voici l'interface de listing des sessions réalisées dans BigBlueButton, et récupérées via le job :
Il est possible de modifier les données si nécessaire.
| Astuce | ||
|---|---|---|
| ||
Par exemple, via cette interface, il est possible de relancer le processus global pour cette session en modifiant l'étape de l'encodage à 0 et en ne choisissant aucun utilisateur (dans la liste de sélection : ------). Suite à ces changements, il sera possible de republier la présentation Web. |
Nouveauté de la version 2.8 de Pod
Il est maintenant possible à un administrateur de réencoder une session BigBlueButton qui a déjà été encodée par un utilisateur.
Pour ce faire, il suffit de sélectionner le ou les sessions BBB à réencoder dans le module d'administration et d'utiliser la fonction de réencodage :
Réencoder une session qui n'a pas déjà été encodée par un utilisateur ne fonctionnera pas : l'idée de cette fonctionnalité est de permettre à un administrateur de réencoder une session en cas de problème quelconque
...
.
Les utilisateurs BigBlueButton
Voici l'interface de listing des modérateurs de sessions dans BigBlueButton, et récupérées via le job :
Il est possible de modifier les données si nécessaire.
...
| Astuce | ||
|---|---|---|
| ||
Par exemple, via cette interface, il est possible d'affecter un utilisateur à une session, voire modifier une correspondance si celle-ci n'a pas été trouvée ou est erronée. |
Exploitation du script lancé par le job CRON
Si nécessaire, il est possible de voir les traitements réalisés par le script - qui doit normalement être exécuté via un job CRON.
Pour ce faire :
soit il faut configurer Pod pour être en mode debug (cf. settings_local.py).
Attention : le mode debug ne doit pas être activé dans un environnement de production.
soit modifier directement le script /django_projects/podv2/pod/video/management/commands/bbb.py pour qu'il affiche directement les traitements réalisés (cf. fonction print_if_debug).
Il ne reste plus qu'à exécuter ce script /django_projects/podv2/pod/video/management/commands/bbb.py manuellement via la commande python manage.py bbb main :
| Bloc de code | ||||
|---|---|---|---|---|
| ||||
cd /data/www/%userpod%/django_projects/podv2 workon django_pod python manage.py bbb main |
En mode débug, le script affiche l'ensemble des traitements réalisés :
Exploitation courante
Ce système utilise les différents fichiers de logs suivants :
Fichier de logs Celery : le nom de ce fichier de logs - disponible sur les serveurs d'encodage - dépend de votre configuration (worker), mais typiquement, il s'agit de : /var/log/celery/worker1.log
Ce fichier permettra de surveiller l'encodage et des présentations Web BigBlueButton et des encodages standards.
Fichier de logs en lien avec bbb-recorder : pour chaque encodage de la présentation Web BigBlueButton, un fichier de logs est créé.
Ce fichier de logs est créé dans le répertoire configuré via DEFAULT_BBB_PATH/logs (dans mon cas: /data/www/%userpod%/bbb-recorder/logs).
A chaque encodage, un fichier est généré; son nom correspondant à l'identifiant interne (internal_meeting_id) de BigBlueButton de la session concernée.
Vous pouvez utiliser la base de données ou l'interface d'administration pour retrouver cette information.





