GithubHelp home page GithubHelp logo

ibrahim12 / bbb-recorder Goto Github PK

View Code? Open in Web Editor NEW

This project forked from jibon57/bbb-recorder

0.0 1.0 0.0 127 KB

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

License: MIT License

JavaScript 93.16% Shell 6.84%

bbb-recorder's Introduction

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 config.json.
  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)

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

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 "MEETING_ID" (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 config.json 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.

Note: (Workaround here) If presenter do nothing in the meeting room that time ffmpeg may exit with error & will try to reconnect again. So, it's recommend from me to keep webcam on. 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 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

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.