Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/security-union/videocall-rs

teleconference system written in rust
https://github.com/security-union/videocall-rs

actix-web rust rust-lang teleconference video-encoding vp9 webcodecs yew zoom zoom-api

Last synced: 22 days ago
JSON representation

teleconference system written in rust

Awesome Lists containing this project

README

        

## πŸš€ Try videocall.rs Today!

Experience seamless, real-time video communication with **[videocall.rs](https://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](https://videocall.rs)** and bring your ideas to life with crystal-clear video and audio. Perfect for remote collaboration, demos, and beyond!

πŸ‘¨β€πŸ’» **Why videocall.rs?**
- Built with **Rust** for performance and safety.
- Low latency, high-quality streaming.
- Easy integration with your projects.

## ▢️ YouTube Videos

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

# video-call.rs

MVP of a teleconferencing system written in rust, both the backend and the UI.

# How to try it out?

## Setup
Technically you could run this with a single computer, but it is more fun if you use 2+.

## Steps

1. Start the servers on the computer that you intend to use as the server using `ACTIX_UI_BACKEND_URL=ws://:8080 make up` (requires docker).

2. Enable WebTransport Developer Mode:
- Go to `chrome://flags/#enable-webtransport-dev-mode`
- Enable the flag
- Close chrome

3. Open chrome using the `launch_chrome.sh` script, this will allow you to use webtransport locally.

4. If your server computer is behind a firewall, make sure that TCP ports 80 and 8080 are open

5. Connect all computers to `http:///meeting//`

6. Make sure that you "allow" access to your mic and camera:
Screen Shot 2022-10-24 at 8 23 50 AM

7. Click connect on both browsers, and enjoy:

![Oct-24-2022 08-37-09](https://user-images.githubusercontent.com/1176339/197853024-171e0dcc-2098-4780-b3be-bfc3cb5adb43.gif)

## ▢️ YouTube Channel
https://www.youtube.com/@securityunion

## πŸ‘‰ Join our Discord Community
You can join our Discord Community, here is the [invite link](https://discord.gg/JP38NRe4CJ).

## 🫡 We need your haaalp!
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](/rfc)

## πŸ‘¨β€πŸ’» Project Structure

Contains 3 sub-projects

1. actix-api: actix web server
2. yew-ui: Yew frontend
3. types: json serializable structures used to communicate the frontend and backend.

# Local Development

## Dockerized workflow

1. Install docker https://docs.docker.com/engine/install/
2. Run one of the supported make commands
```
make test
make up
make down
make build
```

## Without docker

### Prerequisites

1. 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`

2. Install [trurl](see https://github.com/curl/trurl) and [nats-server]((see https://docs.nats.io/running-a-nats-service/introduction/installation)

### Starting up the servers

1. 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`).

2. Connect your browser to `http://localhost:8081/meeting//`

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`

## πŸ‘€ Contributors ✨


Dario


Griffin Obeid


Leone


Leone


Victor MartΓ­nez

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.

## Show your support

Give a ⭐️ if this project helped you!