How to Download a BigBlueButton Presentation
Table of Contents
BigBlueButton is a web conferencing system designed for online learning. One thing that I was missing on it was downloading a recorded presentation. In this blog I show a relatively easy hack for doing it, as well as other available options.
1 The problem
Although BBB is very easy to install and use, surprisingly it does not provide an easy way for downloading a recorded presentation. People would expect a button "Download" which they can click in order to download a video of the recorded presentation, which then can be uploaded to YouTube, FB, etc. There is even a quite old and still unresolved issue about this: https://github.com/bigbluebutton/bigbluebutton/issues/1969
Why is it so difficult? It turns out that BBB records separately the screenshare, the webcam (video+microphone), the slides, the comments etc. Since different presentations use these features in different ways, it is difficult to combine them in a single video that is suitable for all the cases.
For example, in my presentations/webinars I use only the screenshare and the voice from the webcams. It is not so difficult to combine these two in a single video, but this combination would not be suitable for another presentation that uses the slides as well. On the other hand, a video producing procedure that takes into account slides would not be suitable for my presentations.
So, there is no single way for producing a video that can be suitable for all the cases. Making a customizable and flexible video generation process that could cover all the cases seems to be difficult, and, as we will see later, maybe not necessary.
2 A simple hack for screenshare + webcam-audio
If the presentation has only the screenshare and the voice (audio) from the webcams, it is not so difficult to download these two recordings manually and to merge them into a video. It can be done like this:
- Open the playback of the recording and notice the
meetingIdon the URL. Something like
meetingId=3edbe3939d18067a08299b9a0a9b8d590af2bb85-1588419273427. Copy it and paste it to the terminal:
meetingId=3edbe3939d18067a08299b9a0a9b8d590af2bb85-1588419273427 echo $meetingId
- Download the webcam and desktop-share recordings:
mkdir my-presentation cd my-presentation/ wget "https://my-bbb.org/presentation/$meetingId/video/webcams.webm" wget "https://my-bbb.org/presentation/$meetingId/deskshare/deskshare.webm"
- Merge them with
ffmpeg -i webcams.webm -i deskshare.webm -c copy presentation.webm
You should first make sure that
ffmpegis installed (like:
apt install ffmpeg).
3 Merging also the video from webcams
If the webcams have also video recordings and we want to merge them as well, we can try to scale it down and place it (embed) on a corner of the screenshare video.
Try commands like this:
ffmpeg -i webcams.webm -t 00:00:10 -c copy webcams1.webm ffmpeg -i deskshare.webm -t 00:00:10 -c copy deskshare1.webm ffmpeg -i deskshare1.webm -vf "movie=webcams1.webm, scale=300:-1 [inner]; \ [in][inner] overlay=1000:500 [out]" presentation1.webm ffplay presentation1.webm
Play with the numbers 300, 1000 and 500 until you get it right. Finally do this:
ffmpeg -i deskshare.webm -vf "movie=webcams.webm, scale=300:-1 [inner]; \ [in][inner] overlay=1000:500 [out]" tmp.webm ffmpeg -i tmp.webm -i webcams.webm -c copy presentation.webm
This blog page contains more details and options: https://www.daniel-mitchell.com/blog/video-in-a-video-ffmpeg/
Another solution is to use any video editing tools, like
https://www.openshot.org/, to do the combination of different
video recordings into a single one. This is in general much more
flexible than using the
ffmpeg command, but requires more work.
It also allows combining the slides etc.
Note: By the way, the slides are saved by BBB as PNG files.
4 Other scripts and solutions
There is a Python script that generates a downloadable MP4 video that includes only webcams, audio and screenshares, but no presentation, no chat window and no whiteboard: https://github.com/ruess/bbb-download This is supposed to be installed on the BBB server and it generates the downloadable video on the server.
Note: I have tried it and it does not seem to work properly. Maybe it needs some small fixing.
There is also this solution which records the player of BBB while it plays a recorded session: https://github.com/jibon57/bbb-recorder
It should be installed and used on the client (not on the server). It basically opens the BBB recording link on a google-chrome tab on background and generates a video recording of the player while it is playing the recording. So, the resulting video includes everything: the presentation, webcams, drawing, chat, etc.