# BigBlueButton Exporter
Server-side version of the script that enables users to download BigBlueButton 2.3 recordings as a single video file.
## What's supported?
✅ Annotations
✅ Captions
✅ Chapters
✅ Chat (with an option to anonymize names)
✅ Cursor
✅ Integration with Greenlight
✅ Polls
✅ Screen shares
✅ Slides
✅ Text
✅ Webcams
✅ Zooms
![BigBlueButton recording exporter](/demo/export_example.png)
## Server-Side Usage
Place the file `presentation.rb` in the `/usr/local/bigbluebutton/core/scripts/post_publish` directory with executable rights.
Do the same for the file `lib/interval_tree.rb`, moving it to `/usr/local/bigbluebutton/core/lib/recordandplayback`.
After a session is over and the presentation is processed, the script will begin to export the recording as a single video file. It can be accessed and downloaded at https://`your.bbb.hostname`/presentation/`meeting-id`/meeting.mp4 once rendering completes, or directly in the Greenlight interface.
The meeting's ID is the alphanumeric string following the 2.3 in the recording's URL.
Existing recordings can be re-rendered by running the exporting script on an individual basis:
./presentation.rb -m -f presentation
Note that this will stop automatic exports unless executed with the `bigbluebutton` user! See the "Troubleshooting" section below.
Alternatively,
bbb-record --rebuild
will rebuild the entire recording (including the playback in the browser).
To re-render all existing recordings, run
bbb-record --rebuildall
If you do not have access to a BBB server, check out the branch 'client-side'.
For caption support, recompile FFmpeg with the `movtext` encoder enabled and uncomment the `add_captions` method.
The chat component can be disabled by turning `HIDE_CHAT` on. If you want to keep the messages but anonymize the names, set `HIDE_CHAT_NAMES` to true.
### Requirements
Root access to a BBB 2.3 server.
### Rendering options
If your server supports animated strokes on the whiteboard, set the flag `REMOVE_REDUNDANT_SHAPES` to **true** in `presentation.rb`.
Less data can be written on the disk by turning `SVGZ_COMPRESSION` on.
To make rendering less resource-intensive, download FFMpeg's source code and replace the file `ffmpeg/libavcodec/librsvgdec.c` with the one in this directory. After compiling and installing FFMpeg, enable `FFMPEG_REFERENCE_SUPPORT` in `presentation.rb` . [Steps by @felcaetano](https://github.com/danielpetri1/bbb-recording-exporter/issues/44#issuecomment-904464887).
The video output quality can be controlled with `CONSTANT_RATE_FACTOR`.
### Troubleshooting
Exports don't start after the meeting ends: `/var/log/bigbluebutton/post_publish.log` and `/var/bigbluebutton/published/video/` must be chowned to `bigbluebutton:bigbluebutton`
### Get in touch
If this code helped you or you encountered any problems, please do get in touch! This script was developed for my [bachelor's thesis](https://mediatum.ub.tum.de/doc/1632305/1632305.pdf) at the Technical University of Munich, so feedback is welcomed.