2023-05-24 20:29:18 +00:00
|
|
|
# Media over QUIC
|
2022-06-29 16:17:02 +00:00
|
|
|
|
2023-05-24 20:29:18 +00:00
|
|
|
Media over QUIC (MoQ) is a live media delivery protocol utilizing QUIC streams.
|
2023-08-25 23:36:06 +00:00
|
|
|
See the [MoQ working group](https://datatracker.ietf.org/wg/moq/about/) for more information.
|
|
|
|
|
|
|
|
This repository contains reusable libraries and a relay server.
|
|
|
|
It requires a client to actually publish/view content, such as [moq-js](https://github.com/kixelated/moq-js).
|
|
|
|
|
|
|
|
Join the [Discord](https://discord.gg/FCYF3p99mr) for updates and discussion.
|
2022-06-29 16:17:02 +00:00
|
|
|
|
|
|
|
|
2023-05-25 00:20:44 +00:00
|
|
|
## Setup
|
2022-06-30 20:23:33 +00:00
|
|
|
|
2023-05-25 00:20:44 +00:00
|
|
|
### Certificates
|
2023-05-24 20:29:18 +00:00
|
|
|
|
2022-06-29 16:17:02 +00:00
|
|
|
Unfortunately, QUIC mandates TLS and makes local development difficult.
|
2023-05-16 17:23:50 +00:00
|
|
|
If you have a valid certificate you can use it instead of self-signing.
|
2022-06-29 16:17:02 +00:00
|
|
|
|
2023-05-25 00:20:44 +00:00
|
|
|
Use [mkcert](https://github.com/FiloSottile/mkcert) to generate a self-signed certificate.
|
|
|
|
Unfortunately, this currently requires Go in order to [fork](https://github.com/FiloSottile/mkcert/pull/513) the tool.
|
2023-05-24 20:29:18 +00:00
|
|
|
|
2022-06-29 16:17:02 +00:00
|
|
|
```
|
2023-05-24 20:29:18 +00:00
|
|
|
./cert/generate
|
2022-06-29 16:17:02 +00:00
|
|
|
```
|
|
|
|
|
2023-05-25 00:20:44 +00:00
|
|
|
Unfortunately, WebTransport in Chrome currently (May 2023) doesn't verify certificates using the root CA.
|
|
|
|
The workaround is to use the `serverFingerprints` options, which requires the certificate MUST be only valid for at most **14 days**.
|
|
|
|
This is also why we're using a fork of mkcert, because it generates certificates valid for years by default.
|
|
|
|
This limitation will be removed once Chrome uses the system CA for WebTransport.
|
2022-06-29 16:17:02 +00:00
|
|
|
|
2023-05-25 00:20:44 +00:00
|
|
|
## Usage
|
2022-06-29 16:17:02 +00:00
|
|
|
|
2023-05-25 00:20:44 +00:00
|
|
|
Run the server:
|
2022-06-29 16:17:02 +00:00
|
|
|
|
|
|
|
```
|
2023-05-24 20:29:18 +00:00
|
|
|
cargo run
|
2022-06-29 16:17:02 +00:00
|
|
|
```
|
|
|
|
|
2023-05-24 20:29:18 +00:00
|
|
|
This listens for WebTransport connections on `https://localhost:4443` by default.
|
|
|
|
Use a [MoQ client](https://github.com/kixelated/moq-js) to connect to the server.
|
2023-07-05 21:55:40 +00:00
|
|
|
|
|
|
|
## License
|
|
|
|
|
2023-07-22 04:03:09 +00:00
|
|
|
Licensed under either:
|
2023-07-05 21:55:40 +00:00
|
|
|
|
2023-07-22 04:03:09 +00:00
|
|
|
- Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)
|
|
|
|
- MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)
|