A Go implementation of Media over QUIC Transport (MOQT), specifically implementing the MOQ Lite specification for efficient media streaming over QUIC.
- Overview
- Quick Start
- Features
- Components
- Examples
- Documentation
- Specification Compliance
- Development
- Contributing
- License
- Acknowledgments
This implementation follows the MOQ Lite specification, providing a foundation for building real-time media streaming applications using QUIC transport.
# install Mage (Go 1.25+)
go install github.com/magefile/mage@latest
# run interop server (WebTransport + QUIC)
mage interop:server
# in another terminal, run a Go client
mage interop:client go
# or run the TypeScript client
mage interop:client ts- MOQ Lite Protocol — Lightweight version of MoQ specification
- Low-latency playback — Minimizes latency from data discovery, transmission/reception to playback
- Uninterrupted playback — Resilient design against network fluctuations through independent data transmission/reception
- Network environment optimization — Enables behavior optimization according to network conditions
- Track management — Publisher/Subscriber model for track data transmission/reception
- Efficient multiplexed delivery — Efficient multiplexing through track announcements and subscriptions
- Web support — Browser support using WebTransport
- QUIC native support — Native QUIC support via
quicwrappers
- Flexible dependency design — Separates dependencies like QUIC and WebTransport, allowing use of only necessary components
- Examples & Interop — Sample applications and interop suite in
examples/andcmd/interop(broadcast, echo, relay, native_quic, interop server/client)
- moqt/ — core package (frames, session, track muxing)
- quic/ — QUIC wrapper and
examples/native_quic - webtransport/, webtransport/webtransportgo/, moq-web/ — WebTransport and client-side code
- examples/ — sample apps (broadcast, echo, native_quic, relay)
moqt— Core Go package for Media over QUIC (MOQ) protocol.moq-web— TypeScript implementation for the web client side.quic— QUIC wrapper utilities used by the core library and examples.webtransport— WebTransport server wrappers (pluswebtransportgo).cmd/interop— Interoperability server and clients (Go/TypeScript).examples— Demonstration apps (broadcast, echo, native_quic, relay).
The examples directory includes sample applications demonstrating how to use gomoqt:
- Interop Server and Client (
cmd/interop/): Interoperability testing between different MOQ implementations - Broadcast Example (
examples/broadcast/): Broadcasting functionality demonstration - Echo Example (
examples/echo/): Simple echo server and client implementation - Native QUIC (
examples/native_quic/): Direct QUIC connection examples - Relay (
examples/relay/): Relay functionality for media streaming
- GoDoc
- MOQ Lite Specification
- Implementation Status — Detailed implementation progress
This implementation targets the MOQ Lite specification, which provides a simplified approach to Media over QUIC Transport. The current implementation status can be found in the moqt package README, which includes detailed tracking of implemented features according to the specification sections.
- Go 1.25.0 or later
- Mage build tool (install with
go install github.com/magefile/mage@latest)
# Format code
mage fmt
# Run linter (requires golangci-lint: go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest)
mage lint
# Run quality checks (fmt and lint)
mage check
# Run all tests
mage test:all
# Run tests with coverage
mage test:coverage# Build the code
mage build
# Clean up generated files
mage clean
# Show available commands
mage helpWe welcome contributions! Here's how you can help:
- Fork the repository.
- Create a feature branch (
git checkout -b feature/amazing-feature). - Make your changes.
- Verify code quality:
mage fmt mage lint mage test - Commit your changes (
git commit -m 'Add amazing feature'). - Push your branch (
git push origin feature/amazing-feature). - Open a Pull Request.
This project is licensed under the MIT License; see LICENSE for details.
- quic-go — QUIC implementation in Go
- webtransport-go — WebTransport implementation in Go
- MOQ Lite Specification — The specification this implementation follows