Thanks to visit codestin.com
Credit goes to github.com

Skip to content

okdaichi/gomoqt

Repository files navigation

gomoqt

A Go implementation of Media over QUIC Transport (MOQT), specifically implementing the MOQ Lite specification for efficient media streaming over QUIC.

Go Reference codecov

Table of Contents

Overview

This implementation follows the MOQ Lite specification, providing a foundation for building real-time media streaming applications using QUIC transport.

Quick Start

# 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

Features

  • 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 quic wrappers
  • Flexible dependency design — Separates dependencies like QUIC and WebTransport, allowing use of only necessary components
  • Examples & Interop — Sample applications and interop suite in examples/ and cmd/interop (broadcast, echo, relay, native_quic, interop server/client)

See also

Components

  • 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 (plus webtransportgo).
  • cmd/interop — Interoperability server and clients (Go/TypeScript).
  • examples — Demonstration apps (broadcast, echo, native_quic, relay).

Examples

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

Documentation

Specification Compliance

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.

Development

Prerequisites

  • Go 1.25.0 or later
  • Mage build tool (install with go install github.com/magefile/mage@latest)

Development Commands

# 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 & Clean

# Build the code
mage build

# Clean up generated files
mage clean

# Show available commands
mage help

Contributing

We welcome contributions! Here's how you can help:

  1. Fork the repository.
  2. Create a feature branch (git checkout -b feature/amazing-feature).
  3. Make your changes.
  4. Verify code quality:
    mage fmt
    mage lint
    mage test
  5. Commit your changes (git commit -m 'Add amazing feature').
  6. Push your branch (git push origin feature/amazing-feature).
  7. Open a Pull Request.

License

This project is licensed under the MIT License; see LICENSE for details.

Acknowledgments

About

Pure Go implementation of the Media over QUIC

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Sponsor this project

 

Packages

No packages published

Contributors 7