Rust!

Native code is written in Rust and is available at kixelated/moq-rs. It’s split into a few crates:

cratedescription
moq-transportA library that mostly implements the MoqTransport draft… with a few strong opinions.
moq-relayA MoQ server that connects publishers to subscribers, caching any duplicate subscriptions.
moq-pubA MoQ client that integrates with ffmpeg to publish fMP4.
moq-clockIt’s a clock! Just to demonstate that MoqTransport can do more than media.
webtransport-quinnA WebTransport client and server utilizing Quinn.

Check out the open issues for a rough road map and potential contributions!

Web

Web code is written in Typescript and is available at kixelated/moq-js. It’s split into a few folders:

folderdescription
transportMostly implements MoQ Transport draft… with same said strong opinions.
contributeCaptures media, encodes via WebCodecs, and transmits over WebTransport.
playbackReceives media over WebTransport, decodes via WebCodecs, and renders via OffscreenCanvas and WebWorklet.
💯🔥🚀🦀 Time to rewrite it in Rust 🦀🚀🔥💯

It’s also available on NPM as @kixelated/moq. This project is using a lot of new web APIs so expect issues.

License

Everything is licensed under MIT or Apache-2.0 so knock yourself out.

If you do end up using MoQ for your project, let the world know! The more public traction we can get, the better we can make the standard.