Bigbluebutton recordings export to webm
or mp4
& live broadcasting. This is an example how I have implemented BBB recordings to distibutable file.
- Videos will be copy to
/var/www/bigbluebutton-default/record
- Can be converted to
mp4
. Defaultwebm
- Specify bitrate to control quality of the exported video by adjusting
videoBitsPerSecond
property inbackground.js
- xvfb (
apt install xvfb
) - Google Chrome stable
- npm modules listed in package.json
- 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
Clone the project first:
git clone https://github.com/jibon57/bbb-recorder
cd bbb-recorder
npm install
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
- BBB recording link
- Export file name. Should be
.webm
at end - Duration of recording in seconds. Default 10 seconds
- Convert to mp4 or not (true for convert to mp4). Default false
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
Sometime you may want to broadcast meeting via RTMP. I did some experiment on it & got success but not 100%. 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 config.json
file (if need).
- First run websocket server by
node ffmpegServer.js
- 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.
Note:
If you do nothing in meeting room that time ffmpeg
may exit with error & will try to reconnect again. Actually I don't have much experience on ffmpeg
to resolve those problems. Please contribute your experience.
When you will run the command that time Chrome
browser will be open in background & visit the link & 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.
We are offering cheaper Bigbluebutton shared hosting or Bigbluebutton installation/configuration/loadbalance service. You can send me email jibon[@]mynaparrot.com
puppetcam. Most of the parts were copied from there.