Skip to content

Jaideep25/Videolify

Repository files navigation

Videolify

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


Author License: AGPLv3 Repo Link code style: prettier Join the chat at https://gitter.im/Videolify/community

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

Open the app in one of following supported browser

Foo


videolify

Features

  • Is 100% Free - Open Source - Self Hosted and PWA!
  • No download, plug-in, or login required, entirely browser-based
  • Unlimited number of conference rooms without call time limitation
  • Translated in 133 languages
  • Host protection to ensure unauthorized access to your host
  • Possibility to password protect the room during the meeting
  • Desktop and Mobile compatible
  • Optimized Room URL Sharing for mobile
  • Webcam Streaming (Front - Rear for mobile)
  • Audio Streaming crystal clear with detect speaking and volume indicator
  • Screen Sharing to present documents, slides, and more...
  • File Sharing (with drag-and-drop), share any files to your participants in the room
  • Select Audio Input - Output and Video source
  • Ability to set video quality up to 4K and 60 FPS
  • Recording your Screen, Audio and Video
  • Snapshot the video frame and save it as image png
  • Chat with Emoji Picker to show you feeling, private messages, Markdown support, possibility to Save the conversations, and many more
  • Speech recognition to send the speeches
  • Advance collaborative whiteboard for the teachers
  • Share any YT Embed video, video mp4, webm, ogg and audio mp3 in real-time
  • Full-Screen Mode on mouse click on the Video element, Pin/Unpin, Zoom in-out video element
  • Possibility to Change UI Themes
  • Right-click on the Video elements for more options
  • Direct peer-to-peer connection ensures the lowest latency thanks to WebRTC
  • Supports REST API (Application Programming Interface)
  • Slack API integration
  • Sentry error reporting
  • ...

Demo

Room name

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/Jaideep25/videolify.git
cd videolify

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

docker

# copy .env.template to .env (edit it according to your needs)
$ cp .env.template .env
# Copy docker-compose.template.yml in docker-compose.yml (edit it according to your needs)
$ cp docker-compose.template.yml docker-compose.yml
# Get official image from Docker Hub
$ docker pull videolify/p2p:latest
# create and start containers
$ docker-compose up # -d
# to stop and remove resources
$ docker-compose down

[//]: https://img.shields.io/badge/-[//]: #webrtc

API

The response will give you a entrypoint / Room URL for your meeting, where authorization: API_KEY_SECRET.

curl -X POST "http://localhost:3000/api/v1/meeting" -H "authorization: videolify_default_secret" -H "Content-Type: application/json"
curl -X POST "https://videolify.up.railway.app/api/v1/meeting" -H "authorization: videolify_default_secret" -H "Content-Type: application/json"
curl -X POST "https://videolify.cleverapps.io/api/v1/meeting" -H "authorization: videolify_default_secret" -H "Content-Type: application/json"

API Documentation

The server exposes a swagger document at http://localhost:3000/api/v1/docs. Or you can check it out live on railway or heroku.


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://videolify.cleverapps.io/


Deploy on Railway

DEMO : https://videolify.up.railway.app/


Security

For Security concerning, please follow this documentation.


Credits

  • Special thanks to Miroslav Pejic!

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 videolify/

Made with ❤️ by Jaideep25