Need help with bbb-recorder?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

jibon57
221 Stars 119 Forks MIT License 95 Commits 8 Opened issues

Description

BigBlueButton recorder using puppeteer to export as webm or mp4 file & Live RTMP broadcasting

Services available

!
?

Need anything else?

Contributors list

# 27,925
Swift
Objecti...
macOS
v2ray-p...
45 commits
# 363,151
CSS
HTML
Vue.js
vuejs
20 commits
# 439,832
Shell
CSS
C
8 commits
# 454,971
Shell
CSS
HTML
capture...
1 commit
# 57,068
gosu
Nextclo...
Rails
ruby-on...
1 commit

bbb-recorder

Bigbluebutton recordings export to

webm
or
mp4
& live broadcasting. This is an example how I have implemented BBB recordings to distibutable file.
  1. Videos will be copy to
    /var/www/bigbluebutton-default/record
    . You can change value of
    copyToPath
    from
    .env
    .
  2. Can be converted to
    mp4
    . Default
    webm
  3. Specify bitrate to control quality of the exported video by adjusting
    videoBitsPerSecond
    property in
    background.js

Dependencies

  1. xvfb (
    apt install xvfb
    )
  2. Google Chrome stable
  3. npm modules listed in package.json
  4. Everything inside
    dependencies_check.sh
    (run
    ./dependencies_check.sh
    to install all)

The latest Google Chrome stable build should be use.

curl -sS -o - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add
echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google-chrome.list
apt-get -y update
apt-get -y install google-chrome-stable

FFmpeg (if not installed already & have plan for mp4 or RTMP)

sh
sudo add-apt-repository ppa:jonathonf/ffmpeg-4
sudo apt-get update
sudo apt-get install ffmpeg

Usage

Clone the project first:

git clone https://github.com/jibon57/bbb-recorder
cd bbb-recorder
npm install --ignore-scripts
cp .env.example .env

Recording export

node export.js "https://BBB_HOST/playback/presentation/2.0/playback.html?meetingId=MEETING_ID" meeting.webm 10 true

Options

You can pass 4 args

1) BBB recording link (mandatory) 2) (Optional) Export file name (should be

.webm
at end). You can use "MEETINGID" (without
.webm
) to set the meeting ID as export name. Default: MEETING
ID 3) (Optional) Duration of recording (in seconds). You can set it to 0 use the real duration of recording. Default: real duration of recording 4) (Optional) Convert to mp4 or not (true for convert to mp4). Default: false

Live recording

You can also use

liveJoin.js
to live join meeting as a recorder & perform recording like this:
node liveJoin.js "https://BBB_HOST/bigbluebutton/api/join?meetingId=MEETING_ID...." liveRecord.webm 0 true

Here

0
mean no limit. Recording will auto stop after meeting end or kickout of recorder user. You can also set time limit like this:
node liveJoin.js "https://BBB_HOST/bigbluebutton/api/join?meetingId=MEETING_ID...." liveRecord.webm 60 true

Live RTMP broadcasting

Sometime you may want to broadcast meeting via RTMP. To test you can use

ffmpegServer.js
to run websocket server &
liveRTMP.js
to join the meeting. You'll have to edit
rtmpUrl
&
ffmpegServer
info inside
.env
file (if need).

1) First run websocket server by

node ffmpegServer.js
2) Then in another terminal tab
node liveRTMP.js "https://BBB_HOST/bigbluebutton/api/join?meetingId=MEETING_ID...."

You can also set duration otherwise it will close after meeting end or kickout:

node liveRTMP.js "https://BBB_HOST/bigbluebutton/api/join?meetingId=MEETING_ID...." 20

Check the process of websocket server,

ffmpeg
should start sending data to RTMP server.

Alternatively, you can stream via a docker container:

# copy compose file, update the environment params and the meeting join url
cp docker-compose.yml.livertmp-stream-example docker-compose.yml
docker-compose build
docker-compose up

How it will work?

When you will run the command that time

Chrome
browser will be open in background & visit the link to perform screen recording. So, if you have set 10 seconds then it will record 10 seconds only. Later it will give you file as webm or mp4.

Note: It will use extra CPU to process chrome & ffmpeg.

Looking for Bigbluebutton shared hosting?

We are offering cheaper Bigbluebutton Premium hosting or Bigbluebutton installation/configuration/loadbalance service. You can send me email jibon[@]mynaparrot.com

Thanks to

puppetcam. Most of the parts were copied from there.

Canvas-Streaming-Example

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.