Architecture BIGBLUEBUTTON Groupe BigBlueButton - Sénégal BigBlueButton Vue d ensemble Nginx («engine x» : «moteur x») fait office de serveur proxy pour les blocs «bbb- apps» et «bbb- web» afin d apporter un support du protocole RTMPT. Nginx permet de servir le client bbb. Applications «grails» permettant de gérer le timing (scheduling) et la création de conférence. Ces applications gèrent en plus la connexion (login) et la déconnexion (logout) des utilisateurs voulant participer ou sortir d une conférence. Gère la conversion des slides de présentation PDF en Flash. Gère la conversion des slides de présentation PDF en Flash dans le cas où les outils «SWFTools» n en sont pas capables. Ce bloc s occupe aussi de la génération de vignettes (thumbnails). Conduit «message» entre le bloc «bbb- apps» et l e bloc «bbb- web». Applications Red5 responsables de la synchronisation de tous les participants à une conférence. softphone RTMPT HTTP Port 80 PSTN/VoIP tcp port 9123 RTMP (deskshare) Port 1935 Serveur de voix (conférence audio). Une application de voix se connectant à FreeSwitch. Application pour le partage de bureau. Application de vidéo conférence. freeswitch 8 Écoute des événements «utilisateur» (participation, muet/son, parole) et envoi des commandes (muet/son, éjection d un participant) à FreeSwitch. Browser/ flash player 1 RTMP Port 8088 bbb- apps freeswitch- esl 7 sip deskshare video 11 nginx 6 HTTP Port 8080 6 redis 9 3 bbb- web 2 4 red5 grails tomcat BigBlueButton Red5 Apps Nous pensons que red5 est un excellent choix. Nous l utilisons comme serveur «core/cœur» pour la gestion des interactions «temps- réel» avec le client. pdf2swf png2swf 10 NB : BigBluebutton utilise NGINX comme serveur mandataire (proxy) afin d effectuer le routage des requêtes entrantes vers : le client BigBlueButton, le serveur tomcat6 (tournant sur le port 8080) : pour les appels d APIs, et pour permettre le support du «tunneling http» lorsque le client se connecte via RTMPT (Real Time Messaging Protocol Tunneling) sur le port 80 au l ieu de se connecter via RTMP sur le port 1935. swftools imagemagick ghostscript
BigBlueButton Apps Vue d ensemble client BigBlueButtonApplication services handlers notifiers chat participants voice presentation applications To FreeSwitch To redis Point d entrée centrale pour les applications BigBlueButton. Les différentes applications BigBluebutton. Les «handlers» gèrent les clients qui entrent/sortent. Les «handlers» permettent aussi la configuration de l application, la configuration des outils d enregistrement ainsi que les notificateurs. Gestion des appels distants de méthodes depuis le client. Synchronisation de tous les clients grâce à l objet SharedObject. L application «voice» (voix) utilise AMI pour «écouter» ou suivre les événements et l envoi de commandes à FreeSwitch. L application de présentation est à l écoute des informations de mise à jours concernant les conversions de présentation depuis «bbb- web». Application de vidéo conférence. Application d audio conférence. Application de conférence de partage de bureau. Client BigBlueButton Nous avons écrit le client «temps- réel» en flash. Depuis Flash 10, Flash est disponible pour Mac, Unix et PCs et fournit une interface de collaboration avec d autres utilisateurs.
Participation à une conférence vidéo et gestion d une conférence vidéo softphone Browser/ flash player PSTN/VoIP RTMP RTMPT HTTP Port 1935 Port 80 nginx freeswitch RTMP Port 8088 bbb- apps L utilisateur initie un appel en utilisant un softphone ou un sip téléphone normal. freeswitch- esl L utilisateur initie un appel en utilisant un softphone embarqué dans le client (navigateur par exemple). Admission de l appelant dans la conférence. Envoi des événements d admission de l appelant à la conférence et envoi des changements du statut (muet, parle, a quitté la conférence) red5 de l utilisateur. Affichage au niveau du client (navigateur par exemple) d une information notifiant que l utilisateur a bel et bien été ajouté à la conférence. Par exemple : le modérateur rend muet, un utilisateur. Demande à FreeSwitch de rendre muet, l utilisateur. FreeSwitch fait le boulot et renvoie un événement notifiant que l utilisateur a bel et bien été mis en état «muet». Chargement (uploading) d une présentation Le diagramme suivant montre les étapes qui ont lieu lorsqu un présentateur charge une présentation sur le serveur.
Chargement (uploading) d une présentation Browser/ flash player RTMP port 1935 RTMPT HTTP port 80 RTMP port 8088 nginx HTTP Port 8080 bbb- apps redis bbb- web swftools pdf2swf png2swf red5 imagemagick ghostscript grails tomcat mysql Le présentateur charge une présentation PDF. La requête est envoyée au bloc «bbb- web». Utilisation de l outil pdf2swf pour les slides SWF. Si l étape précédente échoue, utilisation des outils «imagemagick» et «ghostscript» pour la génération de slides. Génération des vignettes (miniatures) de slides. Envoi de l état de progression sur la conversion. Envoi de l état de progression sur la conversion au présentateur.
Modèle de partage de bureau : BigBluebutton L Applet appelle l objet BlockManager en passant les dimensions de l écran. L objet BlockFactory créé les blocs tels que définis dans les spécifications du codec SVC1 (Screen Video Codec V1). L objet BlockStreamSender envoie un message ScreenCaptureStart au serveur. L objet BlockStreamReceiver décode et passe le message à l objet SessionManager. L objet SessionManager se charge de créer la session et de créer un BlockManager. Le BlockManager fait appel au BlockFactory pour créer les blocs. Les blocs se serviront des données SVC1 envoyées par le client. La session crée un flux de partage d écran (Objet Stream). Ce flux (Objet Stream) informe le client sur le fait que le partage de bureau a commencé. L objet ScreenVideoViewer met en place la vidéo pour diffuser le flux. L objet ScreenCaptureTaker prend des captures d écran grâce à un mécanisme Java (Java Robot). L objet ScreenCaptureTaker demande à l objet BlockManager afin de mettre à jour les blocs avec les captures d écrans les plus récentes. L objet BlockStreamSender interroge tous les blocs, via l objet Blockmanager. Il leur demande ainsi, d encoder les plus récents écrans en utilisant l objet ScreenVideoEncoder. Si le bloc a été modifié, envoi des données encodées avec SVC1 au serveur grâce au message de l objet ScreenCaptureUpdate. L objet BlockStreamReceiver décode le message de l objet ScreenCaptureUpdate et passe le message décodé à l objet SessionManager. L objet SessionManager détermine la session inhérente au message courant et passe les données reçues. La session passe les données à l objet BlockManager qui les enregistre dans le block correspondant au niveau du client. 12 L objet BlockManager informe périodiquement l objet FrameGenerator afin de créer des cadres (frames) SVC1 en utilisant les données provenant de tous les blocs que le BlockManageren question gère. 13 L objet FrameGenerator passe les cadres (frames) SVC1 générés à l objet Stream afin d être affichés au niveau du client comme flux vidéo. 14 L objet ScreenVideoViewer se charge enfin d afficher les cadres (frames) SVC1 au niveau du client.
Entrer en conférence vidéo en utilisant le client softphone Browser/ flash player 3 1 PSTN/VoIP RTMP Port 1935 RTMP Port 1935 freeswitch bbb- apps freeswitch- esl sip red5 2 Participant voulant se joindre à une conférence vidéo : il clique sur le bouton pour participer à la conférence. L application SIP essaie de joindre le numéro de conférence afin d entrer en conférence audio (voix). Le client est tenu informé sur le statut (muet/non- muet, en train de parler) du participant.