BigBlueButton Streaming - Your free, open-source solution to expand your virtual classrooms to thousands of learners globally. Stream live on YouTube, Facebook, Vimeo, or any RTMP server right from BigBlueButton. No more user limit - teach without boundaries.
Embrace a limitless learning experience with BigBlueButton Streaming, the ultimate solution for your expanding educational needs. Developed as a free open-source software extension, BigBlueButton Streaming allows you to extend your virtual classrooms to thousands of learners around the globe. Widely recognized as the leading open-source classroom software, BigBlueButton is trusted by countless educational institutions worldwide. However, with a capacity limit of 100 users per class, larger educational sessions became a challenge โ until now. Introducing BigBlueButton Streaming, your key to conducting large-scale, one-time events or regular oversized classes. Seamlessly stream your virtual classes directly from BigBlueButton to platforms such as YouTube, Facebook, Vimeo, or any RTMP server. It's simple to use - enter the RTMP URL and access key, click on "Start Streaming", and voila! Your class is live and can now reach thousands of students concurrently. This intuitive, user-friendly tool breaks boundaries in digital learning, bringing education closer to those who crave it. Experience this revolutionary extension today. Unleash the full potential of virtual learning with BigBlueButton Streaming, because education should know no boundaries.
The requirement to install this software is BigBlueButton should be installed.
Minimum environment requirements
bigbluebutton-streaming/
git clone https://github.com/AsyncWeb/bigbluebutton-streaming.git
cd bigbluebutton-streaming
bash install.sh
> ๐จ Note: install.sh will restart the bigbluebutton server, please make sure there is no meetings running on the server.
> ๐ก Make sure to stop streaming before Ending the BigBlueButton session.
<br/>
[๐บ Installation Demo](https://bbb1.asyncweb.io/recording/bigbluebutton-streaming-installation.mp4)
<br/>
<br/>
## ๐๐ Set Default RTMP URL and Access Key
After successful installation, You can set default streaming server URL and access key by editing the `/usr/share/meteor/bundle/programs/server/assets/app/config/settings.yml` file.
```bash
public:
app:
# BigBlueButton-streaming rtmp URL and stream key.
# set default streaming server URL and access key here.
rtmpURL: ''
streamKey: ''
Once you set the rtmp URL and stream key, restart the bigbluebutton html5 client.
sudo systemctl restart bbb-html5
If you aim to host multiple meetings simultaneously on your single BigBlueButton server and require concurrent streaming for each, follow these steps to set it up.
Navigate to the streaming server directory:
cd bigbluebutton-streaming/streaming-server/
Open the .env file for editing using sudo privileges. For instance, with the vi editor:
sudo vi .env
In the .env file, modify the NUMBER_OF_CONCURRENT_STREAMINGS variable to indicate the number of simultaneous streams you want to handle. For instance, to enable three concurrent streams:
NUMBER_OF_CONCURRENT_STREAMINGS=3
Save your changes and exit the file editor.
Build Docker image:
docker build -t bbb-stream:v1.0 .
Finally, restart your bbb-streaming service with pm2:
pm2 restart bbb-streaming
Now, your server can handle the number of concurrent streams you've specified, allowing each meeting to be streamed simultaneously.
๐จ Note: If you encounter the error shown above, it indicates that your server has reached its limit for concurrent streams.
๐ก Remember: Successful operation of concurrent streaming depends significantly on the capacity of your server. Ensure that your server is capable of handling the number of concurrent streams you've set.
bigbluebutton-streaming/
.uninstall.sh
.
cd bigbluebutton-streaming
bash uninstall.sh
<br/><br/>
## ๐ ๏ธ Troubleshooting
<br />
<div align="center">
<img alt="bbb-streaming-error" width="90%" src="https://github.com/asyncwebio/bigbluebutton-streaming/raw/master/static/streaming-error-1.png">
</div>
<br/>
1. ๐จ When you encounter the error above, most likely the BigBlueButton-streaming backend (`bbb-streaming`) is not running. Please follow the steps below to troubleshoot:
- Execute the command below to check whether `pm2` is present and is running the node application on your BigBlueButton server
```bash
pm2 list
<div align="center">
<img alt="bbb-streaming-error" width="90%" src="https://github.com/asyncwebio/bigbluebutton-streaming/raw/master/static/streaming-error-2.png">
</div>
<br/>
- If you find bbb-streaming listed above with status not as `online`, you would need to restart `bbb-streaming` by using the following command:
```bash
pm2 restart bbb-streaming
```
- Now, you would be seeing `bbb-streaming` status as online.
<div align="center">
<img alt="bbb-streaming-error" width="90%" src="https://github.com/asyncwebio/bigbluebutton-streaming/raw/master/static/streaming-error-3.png">
</div>
<br/>
๐จ If you encounter other errors, try looking for error logs by running the following command:
pm2 logs bbb-streaming
To fix this, a user to run sudo without needing to enter a password, you can modify the sudoers file.Here are the steps:
Open a terminal.
Type sudo visudo
. This will open the sudoers file in the system's default text editor. The visudo command checks the syntax of the sudoers file to help prevent you from accidentally locking yourself out of the system.
Scroll down to the section of the file that looks like this:
# User privilege specification
root ALL=(ALL:ALL) ALL
username
with the username for which you want to allow passwordless sudo commands:username ALL=(ALL:ALL) NOPASSWD: ALL
Press Ctrl+X
to exit the editor, then Y
to save changes, and Enter
to confirm.
Now Restart the bbb-streaming
service by running the following command:
pm2 restart bbb-streaming
Now, the user you added will be able to use sudo
without being asked for a password.
๐If you find diffrent logs, share with us by creating an issue on this repository ๐ฎ. Please ensure to include relevant screenshots and a detailed description of the problem for better assistance.
๐จ When you run bash uninstall.sh
, and if encounter below error:
permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/json?filters=%7B%22ancestor%22%3A%7B%22bbb-stream%3Av1.0%22%3Atrue%7D%7D": dial unix /var/run/docker.sock: connect: permission denied
The error message you're encountering is related to the Docker permissions. Your user does not have the required permissions to interact with the Docker daemon. To fix this:
Add your user to the docker group: This is the most straightforward solution. It allows your user to interact with the Docker daemon as if you were the root user.
sudo usermod -aG docker $USER
And then log out and log back in so that your group membership is re-evaluated.
Run again bash uninstall.sh
and you should be good to go.
โ ๏ธ If you still face issues in running streaming, please email us at support@higheredlab.com and we would be happy to help you.
๐ Node.js App: The Node.js app start streaming container, serving as a controller for streaming BigBlueButton meetings.
๐ฌ REST API: The app exposes a REST API to receive requests for starting and stopping streaming.
๐ Environment Variables: Sensitive data, such as the BigBlueButton URL, secret, and other configurations, are stored in environment variables loaded from a .env file.
๐ Puppeteer Integration: Puppeteer is utilized to launch a headless Chrome browser, enabling programmatic interaction with the BigBlueButton meeting UI.
๐ฅ๏ธ Virtual Display: Xvfb creates a virtual display for Chrome, allowing it to run without a physical display server.
๐ค Joining the Meeting: The app configures Puppeteer to join the BigBlueButton meeting as a viewer with specific settings, such as listen-only mode and element visibility.
๐ผ Screen Recording: A child process invokes ffmpeg to record the meeting screen and stream it to a specified RTMP server.
โน๏ธ Stop Streaming: The app waits for the stop streaming or meeting to end and stops the, streaming, ffmpeg process, finalizing the streaming process.
Save big with our affordable BigBlueButton hosting.