Giter VIP home page Giter VIP logo

bbb-downloader's Introduction

bbb-downloader

A few scripts for downloading BigBlueButton (BBB) recordings as videos.

BBB allows recording sessions, and will allow replaying the recordings in its Web playback page.

For recordings made for BBB's greenlight sessions, the playback page's URL will typically look like https://bbb.example.com/playback/presentation/2.0/playback.html?meetingId=375240faa7265529b58e0efe9f5fe793-b8b2b763a50993de7dfd0

The tools provided here will work with such a URL passed in argument.

A note about the slides and video playback

A nice feature of BBB is the fact that, to present a slides deck, you don’t need to share your screen (as a video stream), but just have to upload your file, which is then auto-converted to images, that are sent to participants, in sync with your next/previous browsing of the slides.

This is great for an attendance with low bandwidth, which can receive the slides (as “static” images) without problems, instead of having to receive a much heavier full screen video stream.

But a side effect is that the playback of a recording, is done by replaying the slides, just as it was done live: displaying images one after the other.

While it is easy to retrieve the audio, webcams of participants, or screen sharings as video streams, which are directly available from the playback web app, it is thus not the same for the slides, which don’t come directly as a video.

Let's first see the easiest tool download_bbb_data.py, which can be used to download everything but slides, which may be your first option.

Downloading already available recordings

To download the videos and slides which are already available to view in the BBB playback page, simply pass its URL to the download_bbb_data.py:

$ ./download_bbb_data.py URL

The script downloads the following files:

  • Videos/deskshare.[webm|mp4]: contains the video of the deskshare

  • Videos/webcam.[webm|mp4]: contains the video of the webcam with the recorded sound track

  • Slides/: contains the slides, downloaded as images

  • Thumbnails/: contains the thumbnails

Adding the sound track to the deskshare video

The recorded sound track is stored in the webcam video, and the deskshare does not contain any sound. To integrate the sound track to the deskshare video, run the integrate_soundtrack.sh script:

./integrate_soundtrack.sh Videos [output_file]

The script creates two files:

  • output.opus: contains the recorded sound track extracted from webcam.webm

  • output_file (by default: output.webm): contains the video of the deskshare with the sound track.

Selecting video format

Depending on the configuration of your BBB instance, the recorded videos will be available on the server directly in mp4 or webm format. By default, the script will try to download in webm format, and tries to fallback to mp4 if webm is not available. You can select the desired format with the -f webm or -f mp4 option. Unfortunately, there doesn't seem to be a way to auto-detect which format is available on a prticular server.

In case you downloaded the webm and want mp4, you can convert it using webm_to_mp4.sh:

$ ./webm_to_mp4.sh output.webm output.mp4

Capturing the full playback with the elgalu/selenium Docker image

This is your next option, if you want to capture, in a single video, the contents of the slides or whiteboard area of the playback.

This second tool will play the recording in a browser running inside a Docker container, and will capture the video and sound of that browser window.

See this video for an explanation and demo:

See https://github.com/elgalu/docker-selenium for more details on the docker image that pilots a web browser.

Assembled in a the run.sh script

  1. npm install
  2. pip3 install progressbar
  3. bash capture-full-replay.sh URL

Wait until the full playback is done, and get the resulting MP4 video in the 'videos/' subdir.

Cropping a captured video

By default, the script captures a firefox window that displays the BBB stream, you remove the firefox window by cropping the video with crop_video.sh:

./crop_video.sh [OPTION] input.mp4 output.mp4
OPTIONS:
   -?                               Show this message
   -s startup_duration              Remove the first startup_duration seconds of the video
   -e stop_duration                 Cut the video after stop_duration (from the start of the input video)
   -m                               Only show the main screen (ie. remove the webcam)

bbb-downloader's People

Contributors

olberger avatar trahay avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.