asyncwebio / bigbluebutton-streaming

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.
https://higheredlab.com
30 stars 7 forks source link
bigbluebutton streaming
bbb-streaming

BigBlueButton Streaming

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.



bigbluebutton-streaming

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.



๐Ÿ—๏ธ Unlock Limitless Learning: Key Features of BigBlueButton Streaming

  1. ๐Ÿ“บ Live Streaming on Multiple Platforms: Directly stream your classroom to YouTube, Facebook, Vimeo, or any RTMP server, maximizing your reach and availability for students around the world.
  2. ๐ŸŽฅ Ease of Streaming: Begin live streaming your classes simply by entering the RTMP URL and access key, and pressing "Start Streaming."
  3. ๐Ÿš€ Large-Scale Class Capacity: Accommodate thousands of students in a single class, bypassing the original 100 users limit of BigBlueButton.
  4. ๐Ÿ”— Compatibility with BigBlueButton: Works directly within BigBlueButton, the widely-adopted virtual classroom software used by many educational institutions globally.
  5. ๐Ÿ†“ Open-Source and Free: BigBlueButton Streaming is an open-source software extension, available to all users at no cost.



๐Ÿ’ก 5 Benefits: Amplify Impact with BigBlueButton Streaming

  1. ๐ŸŒ Expanded Reach: You can now teach thousands of students from various geographical locations simultaneously.
  2. ๐Ÿ“ฑ Increased Accessibility: With classes being streamed on popular platforms, students can access lessons from devices they already use in their everyday lives.
  3. ๐Ÿ’ฐ Cost-Efficiency: As a free, open-source software, BigBlueButton Streaming allows educational institutions to reduce costs associated with premium virtual classroom tools.
  4. โฐ Flexibility and Convenience: The ability to schedule large classes or one-time events provides flexibility to educators and convenience to learners.
  5. ๐Ÿงฉ Ease of Integration: Being an extension of the already popular BigBlueButton, integrating this tool into existing educational frameworks is straightforward and hassle-free.



๐Ÿ“‹ Requirements

The requirement to install this software is BigBlueButton should be installed.

Minimum environment requirements



๐Ÿ“ฆ Installation

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



๐Ÿ”„ Concurrent Streaming

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.


Now, your server can handle the number of concurrent streams you've specified, allowing each meeting to be streamed simultaneously.



bbb-streaming-error


๐Ÿšจ 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.



๐Ÿ—‘๏ธ Uninstallation

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/>
  1. ๐Ÿšจ If you encounter other errors, try looking for error logs by running the following command:

      pm2 logs bbb-streaming


    • If you see error log as below, it means the error message you are seeing typically occurs when trying to use sudo in a script or automated process where no terminal is available to provide the password interactively.
    bbb-streaming-error


    • 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
      • Underneath the root user, add the following line, replacing 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.



  1. ๐Ÿšจ 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.



๐Ÿ”Ž How it works

  1. ๐Ÿš€ Node.js App: The Node.js app start streaming container, serving as a controller for streaming BigBlueButton meetings.

  2. ๐Ÿ“ฌ REST API: The app exposes a REST API to receive requests for starting and stopping streaming.

  3. ๐Ÿ”‘ Environment Variables: Sensitive data, such as the BigBlueButton URL, secret, and other configurations, are stored in environment variables loaded from a .env file.

  4. ๐Ÿ”— Puppeteer Integration: Puppeteer is utilized to launch a headless Chrome browser, enabling programmatic interaction with the BigBlueButton meeting UI.

  5. ๐Ÿ–ฅ๏ธ Virtual Display: Xvfb creates a virtual display for Chrome, allowing it to run without a physical display server.

  6. ๐Ÿค 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.

  7. ๐Ÿ“ผ Screen Recording: A child process invokes ffmpeg to record the meeting screen and stream it to a specified RTMP server.

  8. โน๏ธ Stop Streaming: The app waits for the stop streaming or meeting to end and stops the, streaming, ffmpeg process, finalizing the streaming process.

    bbb-streaming



๐Ÿš€ Stress-free BigBlueButton hosting! Start free Trial

Save big with our affordable BigBlueButton hosting.

Start Free Trial