# bbb-recorder Bigbluebutton recordings to `webm` or `mp4`. This is an example how I have implemented BBB recordings to distibutable file. 1. Videos will be copied to `/var/www/bigbluebutton-default/record` 3. Can converted to `mp4`. Default `webm` 2. Specify bitrate to control quality of the exported video by adjusting `videoBitsPerSecond` property in `background.js` ### Dependencies 1. xvfb (`apt install xvfb`) 2. npm modules listed in package.json (`npm install`) ### Usage Clone the project first: ```javascript git clone https://github.com/jibon57/bbb-recorder cd bbb-recorder npm install ``` Now run: ```sh 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 2) Export file name. Should be `.webm` at end 3) Duration of recording in seconds. Default 10 seconds 4) 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: ```sh node liveJoin.js "https://BBB_HOST/bigbluebutton/api/join?meetingId=MEETING_ID...." liveRecord.webm 10 true ``` **Live RTMP broadcasting.(Experimental)** 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` from `ffmpegServer.js` & port (if need). Then add websocket value as `ffmpegServer` in `liveRTMP.js` file. 1) Frist run websocket server by `node ffmpegServer.js` 2) Then in another terminal tab ```sh node liveJoin.js "https://BBB_HOST/bigbluebutton/api/join?meetingId=MEETING_ID...." ``` You can also set duration like this too otherwise it will close after meeting end or kickout: ```sh node liveJoin.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. Actually I don't have much experience on `ffmpeg` to resolve those problems. Please contribute your experience. ### How it will work? When you will run the command that time `chromium` 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.** ### Looking for Bigbluebutton shared hosting? We are offering cheaper [Bigbluebutton shared hosting](https://www.mynaparrot.com/classroom) or Bigbluebutton insallation/configuration service. You can send me email jibon[@]mynaparrot.com ### Thanks to [puppetcam](https://github.com/muralikg/puppetcam). Most of the parts were copied from there. [Canvas-Streaming-Example](https://github.com/fbsamples/Canvas-Streaming-Example)