mystery is a WebRTC server solution implemented using Rust and supports the SFU/MCU model. Compared with other ongoing projects, the current project prioritizes WebRTC one-to-many live broadcasting, but this does not mean that the project will give up peer-to-peer two-way dialogue.
Table of contents
Roadmap
Important: The project was developed by myself. This is just my side project, so the development progress will be slower. If you are looking for the mature and highly supported webrtc component of rust instead of the media control center implementation, you can follow this project: webrtc.rs
Base protocols support:
- turn (add support for session node grouping)
- stun (superfast parser! The throughput of a single thread is as high as 3Gib/s! 30 million stun packets can be processed in one second!)
- rtp (lock the rtp version to rfc3550)
- sdp (partial support of the protocol)
- [doing] rtcp
- srtp
- srtcp
- [doing] dtls (the encryption process is not clear)
Peripheral components:
- ice
- sfu
- mcu
- control (node.js driver, cluster control center)
- [doing] media codec
Building
Prerequisites
You need to install the Rust toolchain, if you have already installed it, you can skip it, Install Rust, then get the source code:
git clone https://github.com/mycrl/mystery
And, you need to install the openssl toolchain.
Windows
If you have chocolatey installed you can install openssl via a single command i.e.
choco install openssl
Linux
sudo apt-get install libssl-dev
Macos
brew install openssl
Build workspace
Compile the entire workspace in release mode:
cd mystery
cargo build --release
After the compilation is complete, you can find the binary file in the "target/release" directory.
Docker compose
Use docker-compose to start all services:
cd mystery
docker-compose up -d
Code style
The coding style of this project may not conform to the community style or the habits of most people, but it conforms to my own style. I have paranoid requirements for the code format, I know this is a bad habit, and the current project is also independently developed and maintained by me. If you have more suggestions, you can tell me.
License
GPL Copyright (c) 2020 Mr.Panda.