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.

...

bbb-pod-live se présente sous la forme d'un simple script PHP. Il faut donc avoir à minima PHP 7 (avec php-xml) qui tourne sur cette machine.

...

Configuration de bbb-pod-live

Mise en place du job CRON

...

Pour l'instant, la configuration se réalise directement dans les premières lignes du script PHP. A terme, il faudra utiliser un fichier de configuration.

Voici la liste des éléments paramétrables :

ParamètreValeurs possibles / ExemplesCommentaires
Paramétrage nécessaire pour bbb-pod-live
DEBUGtrue/falseApplication en mode débogage (true - on logue toutes les lignes) ou en production (false - on logue seulement les erreurs et infos).
PHYSICAL_BASE_ROOT"/home/user/bbb-pod-live/"

Répertoire de base de l'application et avoir suffisamment d'espace disque pour l'enregistrement de quelques vidéos (stockage temporaire)
(info)Ce répertoire doit être sur un disque dur de la machine serveur.

PHYSICAL_LOG_ROOT"/home/user/bbb-pod-live/logs/"

Constante permettant de définir le chemin physique du répertoire contenant les logs applicatifs.
(info)L'arborescence doit être sur un disque dur local de la machine serveur.

ADMIN_EMAIL"administrateur@univ.fr"Mail de l'administrateur de BBB-POD-LIVE, qui recevra les mails en cas d'erreur
SERVER_HOSTNAME"server.infra.univ.fr"Hostname de ce serveur BBB-POD-LIVE (utile pour Redis et le chat)
NUMBER_SERVERS2Nombre de serveurs BBB-POD-LIVE
SERVER_NUMBER1

Numéro unique de ce serveur dans la liste des serveurs BBB-POD-LIVE
Par exemple: s'il y a 2 serveurs BBB-POD-LIVE (NUMBER_SERVERS = 2), alors un serveur devra avoir SERVER_NUMBER=1 et l'autre SERVER_NUMBER=2

NUMBER_LIVES2Nombre de directs gérés par ce serveur (à adapter selon les ressources du serveur)
Paramétrage nécessaire pour BigBlueButton-liveStreaming (cf. https://github.com/aau-zid/BigBlueButton-liveStreaming)
BBB_URL"https://bbb.univ.fr/bigbluebutton/api"URL du serveur BigBlueButton/Scalelite, avec la notion d'API
BBB_SECRET"xxxxxxxxxxxxxxxxxxxxxxxxxxxx"Clé secrète du serveur BigBlueButton/Scalelite
BBB_RESOLUTION"1280x720"Résolution pour diffuser / télécharger au format WxH (Défaut: 1920x1080). cf. BBB_RESOLUTION
FFMPEG_STREAM_VIDEO_BITRATE"3000"Bitrate de la vidéo (Défaut: 4000). cf. FFMPEG_STREAM_VIDEO_BITRATE
FFMPEG_STREAM_THREADS"0"Threads utilisés pour le flux (Défaut: 0). 0 signifie auto. cf. FFMPEG_STREAM_THREADS
BBB_STREAM_URL"rtmp://livex.univ.fr/live/"

Serveur RTMP qui va gérer les directs pour ce serveur bbb-pod-live cf. BBB_STREAM_URL
Format, sans authentification : rtmp://serveurRTMP.domaine.fr:port/application/
Format, avec authentification : rtmp://user@password:serveur.domaine.fr:port/application/
Exemple : rtmp://live.univ.fr:1935/live/

BBB_ATTENDEE_PASSWORD"JAMHEVcAdpoS"

Mot de passe des participants cf. BBB_ATTENDEE_PASSWORD
(info)Doit être défini comme le mot de passe du participant de Moodle / Greenlight ou de tout autre frontend pour permettre la participation via leurs liens

BBB_MODERATOR_PASSWORD"AOcEHxFFDtrD"

Mot de passe des modérateurs cf. BBB_ATTENDEE_PASSWORD
(info) Doit être défini comme le mot de passe du modérateur de Moodle / Greenlight ou de tout autre frontend pour permettre la participation via leurs liens

Paramétrage nécessaire pour Pod
POD_HLS_STREAM"https://livex.univ.fr/hls/"Flux HLS, dépend de la configuration du serveur RTMP Nginx utilisé
POD_URL"https://pod.univ.fr"URL du serveur Pod
POD_TOKEN"xxxxxxxxxxxxxxxxxxxxxxxxxxxx"Token de sécurité de Pod, utile pour attaquer Pod via les API Rest (cf. administration de Pod / Jeton)
POD_ID_BUILDING1Identifiant du bâtiment POD (au sens live/building de POD) de rattachement des diffuseurs créés par bbb-pod-live
POD_DEFAULT_BBB_PATH"/data/www/user/bbb-recorder/"

Répertoire dans lequel copier les fichiers vidéo générés par BigBlueButton-liveStreaming
(avertissement) Ce répertoire - typiquement un partage NFS - doit être accessible aussi par POD et correspondre à DEFAULT_BBB_PATH du fichier settings_local.py.
(info)Si ce n'est pas possible, laisser ce champ vide et positionner USE_BBB_LIVE_DOWNLOADING = False dans le settings_local de POD.

Après avoir réalisé ce paramétrage, le mieux est de lancer manuellement, en mode DEBUG, le script bbb-pod-live.php via : 

cd /home/user/bbb-pod-live/; php -f ./bbb-pod-live.php

Cette première exécution est importante car :

  • cela va créer le répertoire des logs et le fichier de log correspondant à la journée,

  • cela va créer un répertoire bbb-live-streaming par le nombre de directs gérés par ce serveur (NUMBER_LIVES).

    (coche)Par exemple, si 2 directs sont gérés par ce serveur, 2 répertoires seront créés dans le répertoire bbb-pod-live : 
         » bbb-live-streaming1
         » bbb-live-streaming2

  • pour chacun de ces répertoires  bbb-live-streaming, un fichier de configuration de bbb-live-streaming, docker-compose.yml, sera positionné avec les valeurs par défaut dans ce répertoire (cf. paragraphe suivant).


Fichier docker-compose.yml

Lors de la première exécution, le fichier docker-compose.yml suivant sera positionné dans chaque répertoire bbb-live-streaming créé :

Bloc de code
languageyml
titleFichier docker-compose.yml
version: '3.3'
services:
  redis:
    image: redis
    ports:
      - "modifie_automatiquement:6379"
    networks:
     - app-tier
  bbb-streamer:
    image: aauzid/bigbluebutton-livestreaming
    container_name: liveStreaming1
    shm_size: '2gb'
    environment:
      # BigBlueButton Server url:
      - BBB_URL=modifie_automatiquement
      # BigBlueButton secret:
      - BBB_SECRET=modifie_automatiquement
      # BigBlueButton meetingID:
      - BBB_MEETING_ID=modifie_automatiquement
      # start meeting (optional):
      - BBB_START_MEETING=false
      # attendee password (optional - has to be set to the attendee password of moodle/greenlight or any other frontend to allow joining via their links):
      - BBB_ATTENDEE_PASSWORD=modifie_automatiquement
      # moderator password (optional - has to be set to the moderator password of moodle/greenlight or any other frontend to allow joining via their links):
      - BBB_MODERATOR_PASSWORD=modifie_automatiquement
      # meeting title (optional):
      - BBB_MEETING_TITLE=modifie_automatiquement
      # download / save BigBlueButton meeting
      - BBB_DOWNLOAD_MEETING=modifie_automatiquement
      # Media server url:
      - BBB_STREAM_URL=modifie_automatiquement
      # Resolution to be streamed/downloaded in format WxH (default 1920x1080)
      - BBB_RESOLUTION=modifie_automatiquement
      # stream video bitrate
      - FFMPEG_STREAM_VIDEO_BITRATE=modifie_automatiquement
      # threads used for stream (0=auto)
      - FFMPEG_STREAM_THREADS=modifie_automatiquement
      # Enable chat functionality
      - BBB_ENABLE_CHAT=modifie_automatiquement
      # shows the chat on the left side of the window (Default: false)
      - BBB_SHOW_CHAT=modifie_automatiquement
      # Timezone (default: Europe/Vienna):
      - TZ=modifie_automatiquement
      # Set REDIS host (default: 'redis')
      - BBB_REDIS_HOST=redis
      # Set REDIS channel to subscribe (default: 'chat')
      - BBB_REDIS_CHANNEL=modifie_automatiquement
      # Username for the chat (default: 'Chat')
      - BBB_CHAT_NAME=Chat
      # DEBUG
      - DEBUG=modifie_automatiquement
    networks:
      - app-tier
    volumes:
      - ./videodata:/video
networks:
  app-tier:
    driver: bridge

(ampoule) Ce fichier de configuration est extrêmement important pour le bon fonctionnement de la solution.

Ce fichier correspond au paramétrage d'un container de bbb-liveStreaming; la documentation est accessible à l'adresse suivante : https://github.com/aau-zid/BigBlueButton-liveStreaming

L'idée de cette solution est que le paramétrage des différents containers bbb-liveStreaming soit généré automatiquement par bbb-pod-live.

Ainsi, le fait de lancer le script bbb-pod-live.php va modifier cette configuration bbb-liveStreaming et va remplacer quasiment toutes les valeurs des paramètres (ceux avec modifie_automatiquement).

Certains paramètres proviennent :

  • de la configuration bbb-pod-live (DEBUG, BBB_URL, BBB_SECRET, BBB_STREAM_URL...),

  • des options sélectionnées par l'enseignant dans l'interface de Pod (BBB_ENABLE_CHAT, BBB_SHOW_CHAT, ...),

  • du script bbb-pod-live.php selon le contexte (ports, BBB_MEETING_ID, BBB_MEETING_TITLE...).

Mise en place du job CRON

Il est nécessaire de faire tourner ce script régulièrement, typiquement toutes les minutes (pour éviter que les enseignants/étudiants attendent le démarrage des directs). Pour informations, s'il n'y a pas de direct à démarrer ou à arrêter, ce script ne consomme rien comme ressources.

Bloc de code
languagebash
titleJob CRON
crontab -e
*/1 * * * * /usr/bin/bash -c 'cd /home/user/bbb-pod-live/; php -f ./bbb-pod-live.php'


Installation et configuration à réaliser sur Pod

Modification de la périodicité du job CRON existant

Comme expliqué préalablement, le système repose également sur le job CRON utilisé pour le système de publication des présentations Web (cf. https://www.esup-portail.org/wiki/x/AgCBNg).

 Ce job CRON est à installer sur un serveur Pod de votre choix et devra tourner régulièrement (toutes les 2 minutes me paraît un délai correct).

Le script à lancer est positionné dans django_projects/podv2/pod/video/management/commands/bbb.py et permet de gérer les enregistrements effectués par BigBlueButton.

Personnellement, mon CRON est configuré de la sorte :

Configuration dans Pod

Exploitation

...