teleconference system written in rust
MIT License
Experience seamless, real-time video communication with videocall.rs, a cutting-edge platform built for developers by developers. Whether you're building the next big thing in robotics or just need reliable video calls, videocall.rs has got you covered.
🔗 Try It Now and bring your ideas to life with crystal-clear video and audio. Perfect for remote collaboration, demos, and beyond!
👨💻 Why videocall.rs?
Here's how we scaled it to support 1000 user per call https://youtu.be/LWwOSZJwEJI
The initial POC from 2022 https://www.youtube.com/watch?v=kZ9isFw1TQ8
MVP of a teleconferencing system written in rust, both the backend and the UI.
Technically you could run this with a single computer, but it is more fun if you use 2+.
Start the servers on the computer that you intend to use as the server using ACTIX_UI_BACKEND_URL=ws://<server-ip>:8080 make up
(requires docker).
Enable WebTransport Developer Mode:
chrome://flags/#enable-webtransport-dev-mode
Open chrome using the launch_chrome.sh
script, this will allow you to use webtransport locally.
If your server computer is behind a firewall, make sure that TCP ports 80 and 8080 are open
Connect all computers to http://<server-ip>/meeting/<username>/<meeting-id>
Make sure that you "allow" access to your mic and camera:
https://www.youtube.com/@securityunion
You can join our Discord Community, here is the invite link.
We take pride on being community driven, there are many ways to collaborate, from filing an issue or, if you want to dive deeper, being part of our RFC Process
Contains 3 sub-projects
make test
make up
make down
make build
Create a postgresql database that you can accessed without a password. The default database name is actix-api-db
, i.e. the default connection string is postgresql://$USER@localhost/actix-api-db
Install [trurl](see https://github.com/curl/trurl) and [nats-server]((see https://docs.nats.io/running-a-nats-service/introduction/installation)
Run the script ./start_dev.sh
.
It examines various environment variables to control the behavior; see the script itself for details.
By default it runs using websockets rather than webtransport (WEBTRANSPORT_ENABLED=0
) and without encryption (E2EE_ENABLED=0
).
Connect your browser to http://localhost:8081/meeting/<username>/<meeting-id>
You can make multiple connections (with varying usernames) from multiple browser windows or tabs.
If you are using encryption (E2EE_ENABLED=1
), you should lanuch Chrome with
the necessary options for it to accept the local certificate by running ./launch_chrome.sh
The Actix websocket implementation contains fragments from https://github.com/JasterV/chat-rooms-actix in particular the usage of an actor to orchestrate all sessions and rooms.
Give a ⭐️ if this project helped you!