A BigBlueButton recording postscript to provide video download capability.
The assembled video includes:
- shared audio and webcams video
- presented slides with
- whiteboard actions (text and drawings)
- cursor movements
- zooming
- screen sharing
- captions
- chapter marks for each slide & screensharing
Differences to bbb presentation:
- The cursor is rendered as a square box instead of a circle
- The cursor will grow in size when zoom is applied
IMPORTANT: The provided install-script assumes you run BigBlueButton v2.2 on Ubuntu 16.04 as described in the official documentation; i.e. bbb specific folders like the installation directory (/usr/local/bigbluebutton), data directory (/var/bigbluebutton) and log directory (/var/log/bigbluebutton) are hard coded into the scripts.
Tested with BigBlueButton v2.2.23.
cd /opt
git clone https://github.com/tilmanmoser/bbb-video-download.git
cd bbb-video-download
chmod u+x install.sh
sudo ./install.sh
The installation script will
- install dependencies for images processing via apt
- download node v12 binaries for linux x64 (as BBB only provides node v12).
- install node_modules for bbb_video_download
- copy a post_publish script, so that downloadable videos are created automatically
- change the ownership of the installation directory and post script to bigbluebutton
IMPORTANT: Don't update node via apt, since BBB relies on node v8!
The downloadable video will be stored after processing at /var/bigbluebutton/published/presentation/<presentation_id>/video.mp4
and can be accessed in the browser at https://<your_bbb_server>/presentation/<presentationid>/video.mp4
.
cd /opt/bbb-video-download
git pull origin master
Use bbb-record --rebuild <presentation_id>
to reprocess a single presentation or bbb-record --rebuildall
to reprocess all existing presentations.
Alternatively you can run bbb-video-download manually:
cd /opt/bbb-video-download
./node12/bin/node index.js -h
>usage: index.js [-h] [-v] -i INPUT -o OUTPUT [--slides-width SLIDES_WIDTH] [--webcams-width WEBCAMS_WIDTH] [--threads THREADS] [--filter-threads FILTER_THREADS]
>
>optional arguments:
> -h, --help show this help message and exit
> -v, --version show program's version number and exit
> -i INPUT, --input INPUT
> Path to published presentation
> -o OUTPUT, --output OUTPUT
> Outputfile .mp4
> --slides-width SLIDES_WIDTH
> Set width (int) of slide area (presentation and/or deskshare); default 1280
> --webcams-width WEBCAMS_WIDTH
> Set width (int) of webcams area; default 640
> --threads THREADS
> Set # of threads (int) to be used by ffmpeg; default 1
> --filter-threads FILTER_THREADS
> Set # of filter threads (int) to be used by ffmpeg; default 1
Example for a published presentation with internal meeting id 9a9b6536a10b10017f7e849d30a026809852d01f-1597816023148:
cd /opt/bbb-video-download
./node12/bin/node index.js -i /var/bigbluebutton/published/presentation/9a9b6536a10b10017f7e849d30a026809852d01f-1597816023148 -o your-video.mp4
Check /var/log/bigbluebutton/post_publish.log for errors.
MPEG4 is not a free format. You may need to obtain a license to use this script on your server.
Feel free to reuse my code for further enhancements. The assembled ffmpeg command that renders the video is logged in /var/log/bigbluebutton/post_publish.log.