esup-pod

Arborescence des pages

Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.


Avertissement

Cette documentation ne concerne que la version 2.

7.0 et supérieure de Pod.

...

X de Pod 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
titleGestion de l'erreur Evaluation failed (Octobre 2021)

En cas d'erreur du type :

Error: Evaluation failed: TypeError: Cannot read properties of null (reading 'duration')
at __puppeteer_evaluation_script__:2:72
at ExecutionContext._evaluateInternal (/home/pod/bbb-recorder/node_modules/puppeteer/lib/ExecutionContext.js:122:13)
at process._tickCallback (internal/process/next_tick.js:68:7)
-- ASYNC --
at ExecutionContext.<anonymous> (/home/pod/bbb-recorder/node_modules/puppeteer/lib/helper.js:111:15)
at DOMWorld.evaluate (/home/pod/bbb-recorder/node_modules/puppeteer/lib/DOMWorld.js:112:20)
at process._tickCallback (internal/process/next_tick.js:68:7)
-- ASYNC --
at Frame.<anonymous> (/home/pod/bbb-recorder/node_modules/puppeteer/lib/helper.js:111:15)
at Page.evaluate (/home/pod/bbb-recorder/node_modules/puppeteer/lib/Page.js:860:43)
at Page.<anonymous> (/home/pod/bbb-recorder/node_modules/puppeteer/lib/helper.js:112:23)
at main (/home/pod/bbb-recorder/export.js:136:38)
at process._tickCallback (internal/process/next_tick.js:68:7)

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
await page.waitFor(10000)

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
titleMise à jour en lien avec les présentations Web au format BigBlueButton 2.3 (Juillet 2021) => Résolu en Septembre 2021

Suite à la mise à jour de BigBlueButton ou de Scalelite, il peut arriver que les liens des enregistrements BigBlueButton changent de format.
Ainsi, avant la mise à jour, les liens étaient sous la forme : https://bbb.univ.fr/playback/presentation/2.0/playback.html?meetingId=INTERNAL_MEETING_ID
Après la mise à jour, les liens peuvent se retrouvrer sous la forme : https://bbb.univ.fr/playback/presentation/2.3/INTERNAL_MEETING_ID/?meetingId=INTERNAL_MEETING_ID

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 :

  • Remplacer, sur les serveurs d'encodage, le fichier /home/%USERPOD%/bbb-recorder/export.js par le fichier export.js fourni dans ce projet Github : https://github.com/amirhoseinsalimi/bbb-recorder/tree/bbb-v23
    (avertissement) En effet, il semblerait que le projet bbb-recorder (https://github.com/jibon57/bbb-recorder) n'ait pas encore été mis à jour pour prendre en compte ce format 2.3 des enregistrements.

  • Mettre à jour la version de Pod en v2.8.2 ou supérieure.

  • Ajouter à votre settings_local.py : BBB_VERSION_IS_23 = True


Info
titleAstuce en lien avec Scalelite (Juillet 2021) => Résolu en Octobre 2021 (Scalelite v 2.0.1.2)

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
sudo systemctl restart scalelite.target

Contexte et solution apportée

...

Avertissement
titleLes utilisateurs dans BigBlueButton

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.

(avertissement) (avertissement) Ce point est crucial pour que le système fonctionne correctement : une correspondance doit exister sur le "Prenom Nom" ou "Nom Prenom" (selon la configuration BBB_USERNAME_FORMAT) des modérateurs de BigBlueButton et le "Prenom Nom" des utilisateurs dans la base de données de Pod.

(question) (question) A priori, cela devrait pouvoir fonctionner avec Greenlight si celui-ci est configuré pour utiliser l'annuaire LDAP de l'établissement et les champs givenName et sn.

...


bbb-recorderbbb-downloadBigBlueButton-liveStreaming
Enregistre un cours BBB en vidéo(coche) 
format webm, mp4
(coche)(avertissement)
peut enregistré le cours qu'il publie en live au format mkv
Exporte un cours BBB en direct live(coche)(moins)(coche)
Enregistre un cours en temps réel(coche)(moins)(moins)
Indépendance vis-à-vis de BigBlueButton(coche)
peut-être installé sur n'importe quel serveur

(info)
doit être installé sur tous les serveurs BBB

(coche)
peut-être installé sur n'importe quel serveur
Contenu de la vidéo finale(coche) présentation
(coche) audio
(coche) vidéo
(coche)partage d'écran
(coche)chat
(coche)whiteboard
(coche) présentation
(coche) audio
(moins) vidéo
(coche) partage d'écran
(moins) chat
(moins) whiteboard
(coche) présentation
(coche) audio
(coche) vidéo
(coche) partage d'écran
(coche) chat
(coche)(coche) whiteboard
TechnologiesNodeJS, xvfb, Chrome, ffmpeg, shellPython, ruby, ffmpeg, shellDocker, python, xvfb, ffmpeg, shell
Mise à jour régulière(coche)(moins) 
Dernière mise à jour en 2018
(coche)
Notion de charge(ampoule)Le fichier vidéo fait entre 2 et 4Mo par minute, en webm ou mp4(ampoule)Encode nécessairement toutes les Web conférences en vidéo

(info) 1 stream nécessite entre 4 et 6 vCPU + 4 Go RAM
(coche)(coche)possibilité de faire plusieurs streams sur une même VM
(ampoule)
le fichier vidéo fait ~19Mo par minute, en mkv

CommentairesFacilement 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 testsPeut é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
languagetext
titleConfiguration dans custom/settings_local.py
##
# 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
languagebash
titleCréation du répertoire DEFAULT_BBB_PATH et son sous-répertoire logs
%userpod%@ts-sun:~/$ mkdir /data/www/%userpod%/bbb-recorder
%userpod%@ts-sun:~/$ mkdir /data/www/%userpod%/bbb-recorder/logs
%userpod%@ts-sun:~/$ chown %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

...