...
En effet, les sessions/réunions sont toujours accessible accessibles aux usagers, car ils elles sont sauvegardés sauvegardées dans la plateforme concernée, mais pas les enregistrements.
...
Pour ma part, sur les serveurs Ubuntu Debian 11, voici ce qui a été réalisé.
Installation de bbb-recorder sur
...
Debian 11
Ce plugin n'a pas besoin d'être installé sur un serveur BigBlueButton.
...
Bloc de code | ||||
---|---|---|---|---|
| ||||
{ "rtmpUrl": "rtmp://xxxxxxxx:xxxxxxxxxx@xxxxx.umontpellieruniv.fr:1935/live/stream", "ffmpegServer": "ws://localhost", "ffmpegServerPort": 4000, "auth": "xxxx", "copyToPath": "/data/www/pod/bbb-recorder" } |
...
Bloc de code | ||
---|---|---|
| ||
const BBBUrl = "https://xxxx.umontpellieruniv.fr/bigbluebutton/", BBBSalt = "xxxxxxxxxxxxxxxxxxxx", joinName = "recorder"; |
...
Avertissement | ||
---|---|---|
| ||
Ce script ne peut être exécuté comme cela, il est indispensable de réaliser un paramétrage, indépendant de la configuration de Pod, supplémentaire directement dans ce fichier. |
Fonctionnement du script
Comme évoqué ci-dessus, ce script offre 2 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 (via le plugin bbb-recorder) et positionner ces fichiers dans le répertoire d'un enregistreur pour la Revendication des enregistrements (cf. https://www.esup-portail.org/wiki/x/DgB8Lw)
Info | ||
---|---|---|
| ||
Si vous avez un grand nombre d'enregistrements sur une ancienne version de BBB (testé en 2.2), il se peut que vous rencontriez une erreur 404 lors de l'exécution du script, lié au timeout de nginx sur le serveur BBB. Il faudra dans ce cas augmenter sa valeur dans le fichier /etc/bigbluebutton/nginx/web.nginx du serveur BBB Voir https://github.com/bigbluebutton/bigbluebutton/issues/10570 |
Fonctionnement du script
Comme évoqué ci-dessus, ce script offre 2 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 (via le plugin bbb-recorder) et positionner ces fichiers dans le répertoire d'un enregistreur pour la Revendication des enregistrements (cf. https://www.esup-portail.org/wiki/x/DgB8Lw)
Bien sûr, s'il y a déjà des présentations en vidéo, Bien sûr, s'il y a déjà des présentations en vidéo, le fichier vidéo sera directement copié.
...
Ceci est possible en utilisant le paramètre --use-import-video, le paramètre --use-database-moodle (optionnel) et la configuration directement dans ce fichier.
Ce script vous permet également de :
- 3° possibilité, à partir de pod 3.6.0, vous pouvez aussi faire uniquement un export au format CSV de la liste des enregistrements BBB (ce qui vous permet de traiter ensuite ces derniers par ailleurs)
Ceci est possible en utilisant le paramètre --use-export-csv, le paramètre --use-database-moodle (optionnel) et la configuration directement dans ce fichier.
Ce script vous permet également de :
- simuler ce qui sera fait via le paramètre --dry
- de ne traiter que certaines lignes via les paramètres --min-value-record-process et --simuler ce qui sera fait via le paramètre --dry
de ne traiter que certaines lignes via les paramètres --min-value-record-process et --max-value-record-process.
...
Paramètre | Description | Valeur par défaut / Format |
---|---|---|
SCRIPT_BBB_SERVER_URL | Ancienne URL du serveur BigBlueButton/Scalelite | 'https://bbb.univ.fr/' |
SCRIPT_BBB_SECRET_KEY | Clé BigBlueButton ou Scalelite LOADBALANCER_SECRET | 'xxxxxxxxxx' |
SCRIPT_PLAYBACK_URL_23 | Est-ce que la version de BBB est supérieure à 2.3, vis-à-vis des URLs de playback ? Utile pour la lecture de présentations au format 2.0 (pour BBB <= 2.2) ou 2.3 (pour BBB >= 2.3) | True |
SCRIPT_RECORDER_ID | Enregistreur utilisé pour obtenir les enregistrements BBB (utile avec --use-manual-claim) | 1 |
SCRIPT_ADMIN_ID | Administrateur auquel les enregistrements seront ajoutés si les modérateurs n'ont pas été identifiés (utile avec --use-import-video) | 1 |
DB_PARAMS | Paramètres de connexion à la base de données Moodle (utile avec --use-import-video et --use-database-moodle) A partir de Pod 3.6.0, il s'agit d'un dictionnaire dont la clé est le champ bbb-origin-server-name de chaque enregistrement BBB.Si vous n'avez qu'un seul serveur Moodle, remplissez simplement le "default". | Pod 3.5.2 : 'host': 'bddmoodle.univ.fr', { 'host': 'bddmoodle.univ.fr', 'database': 'moodle', 'user': 'moodle', 'password': '', 'port': '', 'connect_timeout': '10' } |
SCRIPT_INFORM | Message d'information qui sera défini dans la base de données Moodle, table mdl_bigbluebuttonbn, champ intro (utile avec --use-import-video et --use-database-moodle) | Message prévisionnel pour l'université de Montpellier |
Arguments du script
...
Pod 3.6.0 : | ||
SCRIPT_INFORM | Message d'information qui sera défini dans la base de données Moodle, table mdl_bigbluebuttonbn, champ intro (utile avec --use-import-video et --use-database-moodle) | Message prévisionnel pour l'université de Montpellier |
IGNORED_SERVERS | Une liste de serveurs à ignorer (soi ce ne sont pas des serveurs Moodle, soit ce sont des serveurs de dev ou de test...) | ["not-a-moodle.univ.fr"] |
USE_CACHE | Utile si vous relancez plusieurs fois le script d'affilée. En mettant USE_CACHE=True, il n'interrogera plus BBB mais la dernière réponse de ce dernier stockée dans un fichier XML | False |
Arguments du script
Argument | Description | Valeur par défaut / Format |
---|---|---|
--use-manual-claim | Utiliser la revendication manuelle | False |
--use-import-video | Utiliser le module d'importation vidéo pour obtenir des enregistrements | False |
--use-database-moodle | Utiliser la base de données Moodle pour rechercher des modérateurs. N'est utile qu'avec --use-import-video ou --use-export-csv. | False |
--min-value-record-process | Valeur minimale des enregistrements à traiter | 1 |
--max-value-record-process | Valeur maximale des enregistrements à traiter | 10000 |
--dry | Simule ce qui sera réalisé | False |
--use-export-csv | Exporte la liste des enregistrements au format CSV. Ajouter --use-database-moodle pour noter dans une colonne les modérateurs. | False |
Exemples et cas d'utilisation
Avertissement | ||
---|---|---|
| ||
Comme dans toute migration, penser à réaliser les sauvegardes adéquates avant d'exécuter ce script sans simulation. Typiquement, à minima la base de données de Pod, voire la base de Moodle (si vous y accédez en écriture) dans le cas de --use_import-video et --use-database-moodle. |
Voici quelques exemples et cas d'utilisation de ce script, à ne lancer qu'après avoir réalisé le paramétrage interne. N'hésitez pas à faire des essais sur quelques lignes et d'utiliser le mode dry pour comprendre ce qui sera réalisé.
Info |
---|
Ne pas hésiter à ignorer le warnings en mettant -W ignore. |
Info |
---|
Avant de réaliser ces commandes, penser à exécuter ces requêtes (à adapter selon votre environnement) : cd /usr/local/django_projects/podv3 |
- Utilisation de la revendication pour tous les enregistrements, en simulation uniquement :
Bloc de code language bash python -W ignore manage.py migrate_bbb_recordings --use-manual-claim --dry
- Utilisation de la revendication d'enregistrements pour seulement les 2 enregistrements les plus récents, en simulation uniquement :
Bloc de code language bash python -W ignore manage.py migrate_bbb_recordings
Exemples et cas d'utilisation
Avertissement | ||
---|---|---|
| ||
Comme dans toute migration, penser à réaliser les sauvegardes adéquates avant d'exécuter ce script sans simulation. Typiquement, à minima la base de données de Pod, voire la base de Moodle (si vous y accédez en écriture) dans le cas de --use_import-video et --use-database-moodle. |
Voici quelques exemples et cas d'utilisation de ce script, à ne lancer qu'après avoir réalisé le paramétrage interne. N'hésitez pas à faire des essais sur quelques lignes et d'utiliser le mode dry pour comprendre ce qui sera réalisé.
Info |
---|
Ne pas hésiter à ignorer le warnings en mettant -W ignore. |
Info |
---|
Avant de réaliser ces commandes, penser à exécuter ces requêtes (à adapter selon votre environnement) : cd /usr/local/django_projects/podv3 |
- Utilisation de la revendication pour tous les enregistrements, en simulation uniquement :
python -W ignore manage.py migrate_bbb_recordings --use-manual-claim --dry
Utilisation de la revendication d'enregistrements pour seulement les 2 enregistrements les plus récents, en simulation uniquement :
python -W ignore manage.py migrate_bbb_recordings --min-value-record-process=1 --max-value-record-process=2 --use-manual-claim --dry &
Utilisation du module d'importation vidéo externe, avec accès à la base de données Moodle pour tous les enregistrements, en simulation uniquement :Info title Utilisation de Celery ou non ? Si vous utilisez les tâches asynchrones (CELERY_TO_ENCODE = True), sans le dry, cette commande va lancer 2 tâches d'encodage.
Si vous n'utilisez pas les tâches asynchrones (CELERY_TO_ENCODE = False), sans le dry, cette commande va réaliser directement l'encodage (sauf si le playback est au format vidéo bien entendu) de la 1° présentation, puis une fois celle-ci terminée, l'encodage de la 2° présentation.
Dans ce cas là, cela peut être long, d'où l'utilisation en arrière plan (via le & en fin de commande).
python -W ignore manage.py migrate_bbb_recordings --use-import-video --use-database-moodle --dry
Utilisation du module d'importation vidéo externe, sans accès à la base de données Moodle pour les 10 enregistrements les plus récents, en simulation uniquement :Info title Pas d'encodage réalisé Sans le dry, cette commande va créer des lignes d'enregistrements externes dans la base de Pod, pour le module d'import des vidéos. Il n'y a alors aucun encodage qui est réalisé à ce moment.
Les usagers pourront retrouver ces enregistrements dans ce module d'import des vidéos et les téléverser sur Pod en tant que vidéo : c'est à ce moment que l'encodage sera réalisé.
python -W ignore manage.py migrate_bbb_recordings
10--min-value-record-process=1 --max-value-record-process=
import2 --use-
videomanual-
claim --dry &
Exploitation
Sortie du script migrate_bbb_recordings
Le script affiche un ensemble d'informations pour chaque ligne traitée; il ne faut pas hésiter à le lancer en mode dry.
Info |
---|
Il est possible de relancer le script plusieurs fois, cela ne va pas créé de doublons. Par contre, cela peut ré-encoder des enregistrements qui avaient déjà été encodés lors de la 1° passe. |
Interface d'administration
Revendication des enregistrements,
L'interface d'administration permettant de suivre les enregistrements traités concerne les enregistreurs et les enregistrements.
Un enregistreur :
Liste des enregistrements :
Import des vidéos externes
L'interface d'administration permettant de suivre les enregistrements traités concerne les enregistrements externes dans Importer une vidéo externe.
Logs de la solution
Info |
---|
Selon votre environnement, les logs de Pod peuvent se retrouver dans le fichier /var/log/syslog |
Tâches asynchrones (CELERY_TO_ENCODE = True)
Sur les serveurs d'encodage, les logs celery se trouvent dans /var/log/celery/worker1.log (selon votre configuration, si vous utilisez plusieurs workers, vous pouvez avoir plusieurs fichiers).
RabbitMQ-Server
Si vous utilisez RabbiMQ-Server, sur ce serveur, vous pouvez avoir des informations dans /var/log/rabbitmq/rabbit@xxxxx.log.
bbb-recorder
...
Info title Utilisation de Celery ou non ? Si vous utilisez les tâches asynchrones (CELERY_TO_ENCODE = True), sans le dry, cette commande va lancer 2 tâches d'encodage.
Si vous n'utilisez pas les tâches asynchrones (CELERY_TO_ENCODE = False), sans le dry, cette commande va réaliser directement l'encodage (sauf si le playback est au format vidéo bien entendu) de la 1° présentation, puis une fois celle-ci terminée, l'encodage de la 2° présentation.
Dans ce cas là, cela peut être long, d'où l'utilisation en arrière plan (via le & en fin de commande).- Utilisation du module d'importation vidéo externe, avec accès à la base de données Moodle pour tous les enregistrements, en simulation uniquement :
Bloc de code language bash python -W ignore manage.py migrate_bbb_recordings --use-import-video --use-database-moodle --dry
Info title Pas d'encodage réalisé Sans le dry, cette commande va créer des lignes d'enregistrements externes dans la base de Pod, pour le module d'import des vidéos. Il n'y a alors aucun encodage qui est réalisé à ce moment.
Les usagers pourront retrouver ces enregistrements dans ce module d'import des vidéos et les téléverser sur Pod en tant que vidéo : c'est à ce moment que l'encodage sera réalisé.
- Utilisation du module d'importation vidéo externe, sans accès à la base de données Moodle pour les 10 enregistrements les plus récents, en simulation uniquement :
Bloc de code language bash python -W ignore manage.py migrate_bbb_recordings --min-value-record-process=1 --max-value-record-process=10 --use-import-video --dry
- Utilisation du module d'export CSV, avec accès à la base de données Moodle pour les 10 enregistrements les plus récents, en simulation uniquement :
Bloc de code language bash python3 manage.py migrate_bbb_recordings --use_export_csv --use-database-moodle --max-value-record-process=10 --dry
Exploitation
Sortie du script migrate_bbb_recordings
Le script affiche un ensemble d'informations pour chaque ligne traitée; il ne faut pas hésiter à le lancer en mode dry.
Info |
---|
Il est possible de relancer le script plusieurs fois, cela ne va pas créé de doublons. Par contre, cela peut ré-encoder des enregistrements qui avaient déjà été encodés lors de la 1° passe. |
Interface d'administration
Revendication des enregistrements,
L'interface d'administration permettant de suivre les enregistrements traités concerne les enregistreurs et les enregistrements.
Un enregistreur :
Liste des enregistrements :
Import des vidéos externes
L'interface d'administration permettant de suivre les enregistrements traités concerne les enregistrements externes dans Importer une vidéo externe.
Logs de la solution
Info |
---|
Selon votre environnement, les logs de Pod peuvent se retrouver dans le fichier /var/log/syslog |
Tâches asynchrones (CELERY_TO_ENCODE = True)
Sur les serveurs d'encodage, les logs celery se trouvent dans /var/log/celery/worker1.log (selon votre configuration, si vous utilisez plusieurs workers, vous pouvez avoir plusieurs fichiers).
RabbitMQ-Server
Si vous utilisez RabbiMQ-Server, sur ce serveur, vous pouvez avoir des informations dans /var/log/rabbitmq/rabbit@xxxxx.log.
bbb-recorder
Les logs des traitements de bbb-recorder sont accessibles dans le répertoire configuré via IMPORT_VIDEO_BBB_RECORDER_PATH/logs.
Suppression des enregistrements externes du module d'import des vidéos
Si vous avez opté pour la 2° possibilité, et l'utilisation du module d'import des vidéos : le jour de l'arrêt complet de votre ancienne infrastructure, les anciens liens ne fonctionneront plus.
Si vous souhaitez supprimer les enregistrements externes qui concernaient votre ancienne infrastructure, il vous est possible de le faire directement via une requête SQL à exécuter dans la base de données de Pod, à savoir :
Bloc de code | ||
---|---|---|
| ||
# Remplacer SCRIPT_BBB_SERVER_URL par la bonne valeur, selon votre environnement
DELETE FROM import_video_externalrecording WHERE source_url like 'SCRIPT_BBB_SERVER_URL%' |
Info |
---|
Je préfère ne pas mettre cette requête dans le script; à vous de voir quand vous souhaitez réaliser cette suppression. Bien entendu, pensez à réaliser une sauvegarde avant. |