Skip to content

Mirotalk clone - Meet theme. Still not ready, DO NOT USE IN PROD for now. In early dev.

License

Notifications You must be signed in to change notification settings

Giotto88/mirotalk

 
 

Repository files navigation

MiroTalk P2P - Meet Themed

Mirotalk collab GMeet

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


Nota1: Il tema è stato realizzato con BootstrapCSS v5.3 (è veloce per creare template al volo)

Nota2: I file modificati/aggiunti per ora sono:

File originali modificati

  • 404.html
  • client.html
  • landing.html
  • login.html
  • maintenance.html
  • newcall.html -> landing
  • testStunTurn.html

File che non verranno modificati

  • about.html
  • privacy.html

( Not finished )

( Not finished )



Features
  • Is 100% Free - Open Source under (AGPLv3) - Self Hosted and PWA!
  • No downloads, plugins, or logins required – completely browser-based.
  • Unlimited conference rooms with no time limitations.
  • Translated into 133 languages.
  • Support for the OpenID Connect (OIDC) authentication layer.
  • Host protection to prevent unauthorized access.
  • User auth to prevent unauthorized access.
  • Room password protection.
  • JWT.io securely manages credentials for host configurations and user authentication, enhancing security and streamlining processes.
  • Compatible with desktop and mobile devices.
  • Optimized mobile room URL sharing.
  • Webcam streaming with front and rear camera support for mobile devices.
  • 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 8K and 60 FPS.
  • Supports advance Picture-in-Picture (PiP) offering a more streamlined and flexible viewing experience.
  • Record your screen, audio, and video.
  • 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.
  • Speech recognition for sending spoken messages.
  • Push-to-talk functionality, similar to a walkie-talkie.
  • Advanced collaborative whiteboard for teachers.
  • Real-time sharing of YouTube embed videos, video files (MP4, WebM, OGG), and audio files (MP3).
  • Full-screen mode with one-click video element zooming and pin/unpin.
  • Customizable UI themes.
  • Right-click options on video elements for additional controls.
  • Direct peer-to-peer connections for low-latency communication through WebRTC.
  • Supports REST API (Application Programming Interface).
  • Integration with Mattermost for enhanced communication.
  • Integration with Slack for enhanced communication.
  • Utilizes Sentry for error reporting.
  • And much more...
Start videoconference
  1. Open MiroTalk P2P or alternative link.
  2. Choose a room name and click Join Room.
  3. Grant camera and microphone access.
  4. Share the room URL and wait for participants to join the video conference.
Direct Join

Note

The token parameter are optional when either HOST_PROTECTED or HOST_USER_AUTH is set to true in the .env file. The valid list of users is defined in the HOST_USERS configuration.

Host Protection Configuration

When host protection or host user auth is enabled, the host/users must provide a valid username and password as specified in the .env 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.
Embed a meeting

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://p2p.mirotalk.com/newcall"
    style="height: 100vh; width: 100vw; border: 0px;"
></iframe>
Quick start

nodejs

  • Before running MiroTalk P2P, ensure you have Node.js installed. This project has been tested with Node versions 12.X, 14.X, 16.X and 18.x.
# clone this repo
$ git clone https://github.com/miroslavpejic85/mirotalk.git
# go to mirotalk dir
$ cd mirotalk
# copy .env.template to .env (edit it according to your needs)
$ cp .env.template .env
# install dependencies
$ npm install
# start the server
$ npm start
Docker

docker

Documentations
# The response will give you the active meetings (default disabled).
$ curl -X GET "http://localhost:3000/api/v1/meetings" -H "authorization: mirotalksfu_default_secret" -H "Content-Type: application/json"
$ curl -X GET "https://p2p.mirotalk.com/api/v1/meetings" -H "authorization: mirotalksfu_default_secret" -H "Content-Type: application/json"
$ curl -X GET "mirotalk.up.railway.app/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:3000/api/v1/meeting" -H "authorization: mirotalkp2p_default_secret" -H "Content-Type: application/json"
$ curl -X POST "https://p2p.mirotalk.com/api/v1/meeting" -H "authorization: mirotalkp2p_default_secret" -H "Content-Type: application/json"
$ curl -X POST "https://mirotalk.up.railway.app/api/v1/meeting" -H "authorization: mirotalkp2p_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:3000/api/v1/join" -H "authorization: mirotalkp2p_default_secret" -H "Content-Type: application/json" --data '{"room":"test","name":"mirotalk","audio":"true","video":"true","screen":"false","hide":"false","notify":"true"}'
$ curl -X POST "https://p2p.mirotalk.com/api/v1/join" -H "authorization: mirotalkp2p_default_secret" -H "Content-Type: application/json" --data '{"room":"test","name":"mirotalk","audio":"true","video":"true","screen":"false","hide":"false","notify":"true"}'
$ curl -X POST "https://mirotalk.up.railway.app/api/v1/join" -H "authorization: mirotalkp2p_default_secret" -H "Content-Type: application/json" --data '{"room":"test","name":"mirotalk","audio":"true","video":"true","screen":"false","hide":"false","notify":"true"}'
# The response will give you an entry point/URL for direct joining to the meeting with a token.
$ curl -X POST "http://localhost:3000/api/v1/join" -H "authorization: mirotalkp2p_default_secret" -H "Content-Type: application/json" --data '{"room":"test","name":"mirotalk","audio":"true","video":"true","screen":"false","hide":"false","notify":"true","token":{"username":"username","password":"password","presenter":"true", "expire":"1h"}}'
$ curl -X POST "https://p2p.mirotalk.com/api/v1/join" -H "authorization: mirotalkp2p_default_secret" -H "Content-Type: application/json" --data '{"room":"test","name":"mirotalk","audio":"true","video":"true","screen":"false","hide":"false","notify":"true","token":{"username":"username","password":"password","presenter":"true", "expire":"1h"}}'
$ curl -X POST "https://mirotalk.up.railway.app/api/v1/join" -H "authorization: mirotalkp2p_default_secret" -H "Content-Type: application/json" --data '{"room":"test","name":"mirotalk","audio":"true","video":"true","screen":"false","hide":"false","notify":"true","token":{"username":"username","password":"password","presenter":"true", "expire":"1h"}}'
# The response will give you a valid token for a meeting.
$ curl -X POST "http://localhost:3000/api/v1/token" -H "authorization: mirotalkp2p_default_secret" -H "Content-Type: application/json" --data '{"username":"username","password":"password","presenter":"true", "expire":"1h"}'
$ curl -X POST "https://p2p.mirotalk.com/api/v1/token" -H "authorization: mirotalkp2p_default_secret" -H "Content-Type: application/json" --data '{"username":"username","password":"password","presenter":"true", "expire":"1h"}'
$ curl -X POST "https://mirotalk.up.railway.app/api/v1/join" -H "authorization: mirotalkp2p_default_secret" -H "Content-Type: application/json" --data '{"username":"username","password":"password","presenter":"true", "expire":"1h"}'
Security

For Security concerning, please follow this documentation.

Credits
  • ianramzy (html template)
  • vasanthv (webrtc-logic)
  • fabric.js (whiteboard)
Contributing
  • Contributions are welcome and greatly appreciated!
  • Just run before npm run lint
License

AGPLv3

MiroTalk P2P is free and open-source under the terms of AGPLv3 (GNU Affero General Public License v3.0). Please respect the license conditions, In particular modifications need to be free as well and made available to the public. Get a quick overview of the license at Choose an open source license.

To obtain a MiroTalk P2P license with terms different from the AGPLv3, you can conveniently make your purchase on CodeCanyon. This allows you to tailor the licensing conditions to better suit your specific requirements.

About

Mirotalk clone - Meet theme. Still not ready, DO NOT USE IN PROD for now. In early dev.

Topics

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 61.3%
  • HTML 24.0%
  • CSS 13.3%
  • Shell 0.5%
  • PHP 0.4%
  • Python 0.3%
  • Other 0.2%