Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/danielpetri1/bbb-recording-exporter
A client- and server side script to generate BigBlueButton MP4 recordings.
https://github.com/danielpetri1/bbb-recording-exporter
bbb-recorder bigbluebutton-addon bigbluebutton-downloader bigbluebutton-plugin bigbluebutton-record-export bigbluebutton-recorder
Last synced: about 12 hours ago
JSON representation
A client- and server side script to generate BigBlueButton MP4 recordings.
- Host: GitHub
- URL: https://github.com/danielpetri1/bbb-recording-exporter
- Owner: danielpetri1
- License: mit
- Created: 2021-04-15T18:02:05.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2024-11-25T16:33:05.000Z (2 months ago)
- Last Synced: 2025-01-19T18:07:27.943Z (8 days ago)
- Topics: bbb-recorder, bigbluebutton-addon, bigbluebutton-downloader, bigbluebutton-plugin, bigbluebutton-record-export, bigbluebutton-recorder
- Language: Ruby
- Homepage:
- Size: 616 KB
- Stars: 103
- Watchers: 17
- Forks: 51
- Open Issues: 18
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# BigBlueButton Exporter
Server-side version of the script that enables users to download BigBlueButton recordings as a single video file.
## What's supported?
The script was developed for BigBlueButton versions ranging from 2.3 to 2.5.
✅ 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
Install the prerequisites (the following packages and RubyGems need to be installed on a BBB v2.5.x server running Ubuntu 20.04):
```shell
sudo apt-get install libsystemd-dev ruby-dev
sudo gem install builder optimist loofah nokogiri redis journald-logger open4 absolute_time
```
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`
### License
This script was developed for my [bachelor's thesis](https://mediatum.ub.tum.de/doc/1632305/1632305.pdf) at the Technical University of Munich and is licensed under MIT. Please cite as
```
@mastersthesis{bbb-recording-exporter,
author = {Daniel Petri Rocha},
title = {Development of a Sophisticated Session Recording Exporter for the BigBlueButton Web Conferencing System},
year = {2021},
school = {Technische Universität München},
month = {},
adress = {80805 Munich},
pages = {65},
language = {en},
abstract = {BigBlueButton is an open-source web conferencing system designed for remote teaching.
A longstanding feature request by community members has been to give users the
ability to download the recording of a meeting as a video file, including the presentation,
webcams, and chat messages. This thesis implemented that enhancement as a script
executed automatically by the server once a recorded conference ends, performing
significantly faster than previous solutions capturing the screen of the web player in realtime.
Additionally, annotated slides can be output as PDF. Processing the presentation into both
formats can also be done client-side if the user has no access to the server.
Development of the converter did not introduce new dependencies into BigBlueButton
and resulted in contributions to a Ruby library providing a data structure for efficient
queries on intervals and FFmpeg, a command-line multimedia framework. The code
offers a foundation for other improvements on BigBlueButton’s roadmap, such as giving
instructors the option to import work done on documents in breakout rooms into the
main session.},
keywords = {open-source, web conferencing},
note = {},
url = {https://mediatum.ub.tum.de/doc/1632305/1632305.pdf},
}
```