/mirotalk

🚀 Powered by WebRTC, Real-time video call, chat room and screen sharing entirely browser based 🚀

Primary LanguageJavaScriptOtherNOASSERTION

Mirotalk

🚀 A free WebRTC browser-based video call, chat and screen sharing 🚀


Author License: CC-NC Donate Repo Link code style: prettier Gitter Discord

Powered by WebRTC using google Stun and numb Turn. Mirotalk provides video quality and latency not available with traditional technology.

Open the app in one of following supported browser

Foo


mirotalk

Features

  • Is 100% Free and Open Source
  • No download, plug-in or login required, entirely browser based
  • Unlimited number of conference rooms without call time limitation
  • Desktop and Mobile compatible
  • Optimized Room Url Sharing (share it to your participants, wait them to join)
  • WebCam Streaming (Front - Rear for mobile)
  • Audio Streaming
  • Screen Sharing to present documents, slides, and more...
  • File Sharing, share any files to your participants in the room
  • Select Audio Input - Output && Video source
  • Recording your Screen, Audio and Video
  • Chat with Emoji Picker & Private messages & Save the conversations
  • Simple Whiteboard for the teachers
  • Full Screen Mode on mouse click on the Video element
  • Possibility to Change UI Themes
  • Right click on the Video elements for more options
  • Direct peer-to-peer connection ensures lowest latency thanks to webrtc
  • Supports API (Application Programming Interface)

Demo

Room join

Quick start

  • You will need to have Node.js installed, this project has been tested with Node version 12.X
  • Clone this repo
git clone https://github.com/miroslavpejic85/mirotalk.git
cd mirotalk

Setup Turn and Ngrok

  • Copy .env.template to .env
cp .env.template .env

Turn

Not mandatory but recommended.

  • Create an account on http://numb.viagenie.ca
  • Get your Account USERNAME and PASSWORD
  • Fill in your credentials in the .env file
  • Set TURN_ENABLED=true, if you want enable the Turn Server.

Ngrok

Not mandatory at all, but useful for tests and debug.

  • Get started for free https://ngrok.com/
  • Fill in your authtoken in the .env file
  • Set NGROK_ENABLED=true, if you want to expose the server using the https tunnel, starting it from your local PC.

Install dependencies

npm install

Start the server

npm start

Docker

Install: https://docs.docker.com/compose/install/

cp .env.template .env
docker-compose up # or
docker-compose up -d

To Update image after some mirotalk changes or updates.

docker-compose build

To Stops containers and removes containers, networks, volumes, and images created by up

docker-compose down

API

The response will give you a entrypoint / Room URL for your meeting.

curl -X POST "http://localhost:3000/api/v1/meeting" -H "authorization: YourApiKeySecret" -H "Content-Type: application/json" -d "{ \"title\": \"Mirotalk GET meeting\"}"
curl -X POST "https://mirotalk.up.railway.app/api/v1/meeting" -H "authorization: mirotalk_default_secret" -H "Content-Type: application/json" -d "{ \"title\": \"Mirotalk GET meeting\"}"
curl -X POST "https://mirotalk.herokuapp.com/api/v1/meeting" -H "authorization: mirotalk_default_secret" -H "Content-Type: application/json" -d "{ \"title\": \"Mirotalk GET meeting\"}"

If you want to use a client on another computer/network, make sure you publish your server on an HTTPS connection. You can use a service like ngrok or deploy it on:


Deploy on Heroku

demo https://mirotalk.herokuapp.com/

heroku-qr


Deploy on Railway

demo https://mirotalk.up.railway.app/

railway-qr


Credits

Many Thanks to:

  • ianramzy (html template)
  • vasanthv (webrtc)
  • Sajad (chat)
  • i-aryan (whiteboard)

From where I took inspiration for this project. ❤️

Contributing

  • Pull Requests are welcome! 🙂
  • Please run prettier on all of your PRs before submitting, this can be done with prettier --write mirotalk/
  • For communication we use gitter or discord chats which can be found here:

Gitter Discord


Made with ❤️ by Miroslav Pejic