Code Monkey home page Code Monkey logo

bbb-video-download's Introduction

bbb-video-download

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

Install

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.

Update

cd /opt/bbb-video-download
git pull origin master

Create downloadable videos for existing recordings

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

Troubleshooting

Check /var/log/bigbluebutton/post_publish.log for errors.

Info for server administrators

MPEG4 is not a free format. You may need to obtain a license to use this script on your server.

Info for fellow developers

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.

bbb-video-download's People

Contributors

tilmanmoser 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.