...
DOCUMENTATION EN COURS DE RÉDACTION ET QUI NE CONCERNE QUE LA VERSION DE TEST DE POD
Sommaire
Contexte et solution apportée
...
| Info | ||
|---|---|---|
| ||
A l'époque de mes tests, le plugin bbb-video-download (https://github.com/tilmanmoser/bbb-video-download) n'existait pas encore. Il pourrait être intéressant de le tester par la suite, s'il s'avère plus prometteur que bbb-recorder. |
Au final, voici ce qui ressort est ressorti de mes tests.
| 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). |
...
É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 %userpod% (pensez à remplacer %userpod% par votre utilisateur).
| Bloc de code | ||||
|---|---|---|---|---|
| ||||
podtest@ts%userpod%@ts-sun:~/$ cd ~ podtest@ts%userpod%@ts-sun:~/$ git clone https://github.com/jibon57/bbb-recorder podtest@ts%userpod%@ts-sun:~/$ cd bbb-recorder podtest@ts%userpod%@ts-sun:~/bbb-recorder/$ npm install --ignore-scripts podtest@ts%userpod%@ts-sun:~/bbb-recorder/$ cp .env.example .env |
Gestion du répertoire contenant les vidéos , : dans mon cas /data/www/podtest%userpod%/bbb-recorder et du répertoire de logs /data/www/podtest%userpod%/bbb-recorder/logs.
| Bloc de code | ||||
|---|---|---|---|---|
| ||||
podtest@ts%userpod%@ts-sun:~/bbb-recorder/$ mkdir /data/www/podtest%userpod%/bbb-recorder podtest@ts%userpod%@ts-sun:~/bbb-recorder/$ mkdir /data/www/podtest%userpod%/bbb-recorder/logs |
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/podtest%userpod%/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"; |
- Configurer 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 %userpod%, le répertoire temporaire créé et utilisé par bbb-recorder est /home/%userpod%/Downloads. Il est nécessaire qu'un espace de stockage suffisant soit alors prévu. |
Configuration dans Pod
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 :
| 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'
# Type of the generated video by default
DEFAULT_BBB_TYPE_ID = 1 |
Les éléments de paramétrage sont les suivants :
- USE_BBB : utilisation (True/False) du plugin BBB pour Pod
DEFAULT_BBB_PLUGIN : répertoire d'installation de bbb-recorder sur les serveurs d'encodage (cf. paragraphe précédent)
- DEFAULT_BBB_PATH : répertoire qui contiendra les fichiers vidéos générés par bbb-recorder et les fichiers de logs inhérents à la conversion
- BBB_SERVER_URL : URL du serveur BigBlueButton ou Scalelite où est positionné les présentations Web et l'API bbb
- BBB_SECRET_KEY : la clé de sécurité de BigBlueButton (côté BigBlueButton, il est possible d'obtenir cette clé via la commande sudo bbb-conf secret).
- DEFAULT_BBB_TYPE_ID : type par défaut de la vidéo générée
Concernant le répertoire contenant les fichiers vidéos générés par bbb-recorder (DEFAULT_BBB_PATH), il est à créer manuellement - en même temps que son sous-répertoire des logs - avec les lignes de commande suivantes; n'hésitez pas à les modifier à votre convenance selon votre architecture système et vos droits :
| 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:~/$ chown %userpod%:nginx /data/www/%userpod%/bbb-recorder/logs |
| Astuce | ||
|---|---|---|
| ||
Il est vrai qu'une création automatique de ces répertoires auraient pu être possible, mais aux vues des problèmes que cela aurait pu engendre, en lien avec l'architecture et les droits, il m'a paru préférable que l'administrateur de Pod créé es 2 répertoires à la main. Il sait ce qu'il fait et pourra ainsi choisir son emplacement, ses droits ou autres. |
Mise en place du job CRON
Comme expliqué préalablement, le système repose principalement sur un job CRON. Ce job CRON est à installer sur un serveur Pod de votre choix et devra tourner régulièrement (toutes les 5 minutes me paraît un délai suffisant).
Le script à lancer est positionné dans django_projects/podv2/pod/video/management/commands/bbb.py.
Personnellement, mon CRON est configuré de la sorte :
| Bloc de code | ||||
|---|---|---|---|---|
| ||||
crontab -e
*/5 * * * * /usr/bin/bash -c 'export WORKON_HOME=/data/www/%userpod%/.virtualenvs; export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3.6; cd /data/www/%userpod%/django_projects/podv2; source /usr/bin/virtualenvwrapper.sh; workon django_pod; python manage.py bbb |
Voici les explications techniques sur ce que réalise cette tâche :