Skip to content

hbqdev/mirotalksfu

Β 
Β 

Repository files navigation

Nexus Wave


Author License: AGPLv3 License: Regular License: Extended Community

Free WebRTC - SFU - Simple, Secure, Scalable Real-Time Video Conferences with support for up to 8k resolution and 60fps. It's compatible with all major browsers and platforms


Explore Free video Calls



Features
  • Is 100% Free - Open Source (AGPLv3) - Self Hosted and PWA!
  • Unlimited conference rooms with no time limitations.
  • Live broadcasting streaming.
  • Translated into 133 languages.
  • Support for the OpenID Connect (OIDC) authentication layer.
  • Host protection to prevent unauthorized access.
  • User auth to prevent unauthorized access.
  • JWT.io securely manages credentials for host configurations and user authentication, enhancing security and streamlining processes.
  • Room password protection.
  • Room lobby, central gathering space.
  • Room spam mitigations, focused on preventing spam.
  • Geolocation, identification or estimation of the real-world geographic location of the participants.
  • Compatible with desktop and mobile devices.
  • Optimized mobile room URL sharing.
  • Webcam streaming with front and rear camera support for mobile devices.
  • Virtual Background and Blur Support: Upload from file, URL, or drag & drop!
  • Broadcasting, distribution of audio or video content to a wide audience.
  • Crystal-clear audio streaming with speaking detection and volume indicators.
  • Screen sharing for presentations.
  • File sharing with drag-and-drop support.
  • Choose your audio input, output, and video source.
  • Supports video quality up to 4K.
  • Supports advance Video/Document Picture-in-Picture (PiP) offering a more streamlined and flexible viewing experience.
  • Record your screen, audio, and video locally or on your Server.
  • Snapshot video frames and save them as PNG images.
  • Chat with an Emoji Picker for expressing feelings, private messages, Markdown support, and conversation saving.
  • ChatGPT (powered by OpenAI) for answering questions, providing information, and connecting users to relevant resources.
  • VideoAI enables users to customize AI avatars to deliver messages, perform tasks, or act out scripts.
  • Speech recognition, execute the app features simply with your voice.
  • Push-to-talk functionality, similar to a walkie-talkie.
  • Advanced collaborative whiteboard for teachers.
  • Advanced collaborative powerful rich text editor.
  • Real-time sharing of YouTube embed videos, video files (MP4, WebM, OGG), and audio files (MP3).
  • Real-time polls, allows users to create and participate in live polls, providing instant feedback and results.
  • Meeting Duration (HH:MM:SS): Set the meeting time in hours, minutes, and seconds for precise duration control.
  • Integrated RTMP server, fully compatible with OBS.
  • Supports RTMP streaming from files, URLs, webcams, screens, and windows.
  • Full-screen mode with one-click video element zooming and pin/unpin.
  • Customizable UI themes.
  • Right-click options on video elements for additional controls.
  • Supports REST API (Application Programming Interface).
  • Integration with Slack for enhanced communication.
  • Integration with Discord for enhanced communication.
  • Integration with Mattermost for enhanced communication.
  • Utilizes Sentry for error reporting.
  • And much more...
About
Direct Join
Host Protection Configuration

When host.protected or host.user_auth is enabled, the host/users can provide a valid token for direct joining the room as specified in the app/src/config.js file.

Params Value Description
host.protected true if protection is enabled, false if not (default false) Requires the host to provide a valid username and password during room initialization.
host.user_auth true if user authentication is required, false if not (default false). Determines whether host authentication is required.
host.users JSON array with user objects: {"username": "username", "password": "password"} List of valid host users with their credentials.

Example:

    host: {
        protected: true,
        user_auth: true,
        users: [
            {
                username: 'username',
                password: 'password',
                displayname: 'displayname',
                allowed_rooms: ['*'],
            },
            {
                username: 'username2',
                password: 'password2',
                displayname: 'displayname2',
                allowed_rooms: ['room1', 'room2'],
            },
            //...
        ],
    },
Quick Start
  • Before running, ensure you have Node.js and all requirements installed. This project has been tested with Node version 18.X.

  • Requirements install example for Ubuntu 24.04 LTS

# Gcc g++ make
$ apt-get update
$ apt-get install -y build-essential
# Python 3.8 and pip
$ DEBIAN_FRONTEND=noninteractive apt-get install -y tzdata
$ apt install -y software-properties-common
$ add-apt-repository -y ppa:deadsnakes/ppa
$ apt update
$ apt install -y python3.8 python3-pip
# FFmpeg
$ apt install -y ffmpeg

nodejs

Install NodeJS 18.X and npm using Node Version Manager


  • Start the server
# Clone this repo
$ git clone https://github.com/miroslavpejic85/mirotalksfu.git
# Go to to dir mirotalksfu
$ cd mirotalksfu
# Copy app/src/config.template.js in app/src/config.js and edit it if needed
$ cp app/src/config.template.js app/src/config.js
# Install dependencies - be patient, the first time will take a few minutes, in the meantime have a good coffee ;)
$ npm install
# Start the server
$ npm start
# If you want to start the server on a different port than the default use an env var
$ PORT=3011 npm start

[!NOTE]

To run MiroTalk SFU on a Windows operating system, you can follow the instructions provided in this documentation.

Docker

docker

# Clone this repo
$ git clone https://github.com/miroslavpejic85/mirotalksfu.git
# Go to to dir mirotalksfu
$ cd mirotalksfu
# Copy app/src/config.template.js in app/src/config.js IMPORTANT (edit it according to your needs)
$ cp app/src/config.template.js app/src/config.js
# Copy docker-compose.template.yml in docker-compose.yml and edit it if needed
$ cp docker-compose.template.yml docker-compose.yml
# (Optional) Get official image from Docker Hub
$ docker-compose pull
# Create and start containers
$ docker-compose up # -d
# To stop and remove resources
$ docker-compose down
Embed a meeting

iframe

To embed a meeting within your service or app using an iframe, you can use the following code:

<iframe
    allow="camera; microphone; display-capture; fullscreen; clipboard-read; clipboard-write; web-share; autoplay"
    src="https://wave.hbqnexus.win/newroom"
    style="height: 100vh; width: 100vw; border: 0px;"
></iframe>
Documentations
# The response will give you the total of rooms and users.
$ curl -X GET "http://localhost:3010/api/v1/stats" -H "authorization: mirotalksfu_default_secret" -H "Content-Type: application/json"
$ curl -X GET "https://wave.hbqnexus.win/api/v1/stats" -H "authorization: mirotalksfu_default_secret" -H "Content-Type: application/json"
# The response will give you the active meetings (default disabled).
$ curl -X GET "http://localhost:3010/api/v1/meetings" -H "authorization: mirotalksfu_default_secret" -H "Content-Type: application/json"
$ curl -X GET "https://wave.hbqnexus.win/api/v1/meetings" -H "authorization: mirotalksfu_default_secret" -H "Content-Type: application/json"
# The response will give you a entrypoint / Room URL for your meeting.
$ curl -X POST "http://localhost:3010/api/v1/meeting" -H "authorization: mirotalksfu_default_secret" -H "Content-Type: application/json"
$ curl -X POST "https://wave.hbqnexus.win/api/v1/meeting" -H "authorization: mirotalksfu_default_secret" -H "Content-Type: application/json"
# The response will give you a entrypoint / URL for the direct join to the meeting.
$ curl -X POST "http://localhost:3010/api/v1/join" -H "authorization: mirotalksfu_default_secret" -H "Content-Type: application/json" --data '{"room":"test","roomPassword":"false","name":"mirotalksfu","audio":"false","video":"false","screen":"false","notify":"false","duration":"unlimited"}'
$ curl -X POST "https://wave.hbqnexus.win/api/v1/join" -H "authorization: mirotalksfu_default_secret" -H "Content-Type: application/json" --data '{"room":"test","roomPassword":"false","name":"mirotalksfu","audio":"false","video":"false","screen":"false","notify":"false","duration":"unlimited"}'
# The response will give you a entrypoint / URL for the direct join to the meeting with a token.
$ curl -X POST "http://localhost:3010/api/v1/join" -H "authorization: mirotalksfu_default_secret" -H "Content-Type: application/json" --data '{"room":"test","roomPassword":"false","name":"mirotalksfu","audio":"false","video":"false","screen":"false","notify":"false","duration":"unlimited","token":{"username":"username","password":"password","presenter":"true", "expire":"1h"}}'
$ curl -X POST "https://wave.hbqnexus.win/api/v1/join" -H "authorization: mirotalksfu_default_secret" -H "Content-Type: application/json" --data '{"room":"test","roomPassword":"false","name":"mirotalksfu","audio":"false","video":"false","screen":"false","notify":"false","duration":"unlimited","token":{"username":"username","password":"password","presenter":"true", "expire":"1h"}}'
# The response will give you a valid token for a meeting (default diabled)
$ curl -X POST "http://localhost:3010/api/v1/token" -H "authorization: mirotalksfu_default_secret" -H "Content-Type: application/json" --data '{"username":"username","password":"password","presenter":"true", "expire":"1h"}'
$ curl -X POST "https://wave.hbqnexus.win/api/v1/token" -H "authorization: mirotalksfu_default_secret" -H "Content-Type: application/json" --data '{"username":"username","password":"password","presenter":"true", "expire":"1h"}'

This project is tested with BrowserStack.


About

πŸ† WebRTC - SFU - Simple, Secure, Scalable Real-Time Video Conferences Up to 8k, compatible with all browsers and platforms.

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • JavaScript 84.0%
  • HTML 9.9%
  • CSS 4.6%
  • Shell 1.0%
  • PHP 0.2%
  • Dockerfile 0.1%
  • Other 0.2%