gomoqt
A Go implementation of Media over QUIC Transfork (MOQT), designed for efficient media streaming over QUIC.
Overview
This implementation follows the MOQ Transfork specification, providing a foundation for building media streaming applications using QUIC transport.
Features
- MOQT Protocol: Core implementation of the MOQTransfork protocol.
- WebTransport Support: Supports both WebTransport and raw QUIC connections.
- Sample Implementations: Provides several code examples for common use cases.
Components
moqt
Implements the main interactions defined by MOQ Transfork.
lomc (Coming Soon)
Implementation of the Low Overhead Media Container.
Note: This package is currently under development.
catalog (Coming Soon)
Implementation of the MOQ Catalog for content detection and management.
Note: This package is currently under development.
Development
Prerequisites
- Go 1.22 or later
- just command runner
Getting Started
-
Clone the repository:
git clone https://github.com/OkutaniDaichi0106/gomoqt.git
cd gomoqt
-
Install the package:
go get github.com/OkutaniDaichi0106/gomoqt
-
Set up the development environment:
just dev-setup
This command will perform the following:
- Install the required certificate tools (mkcert).
- Install development tools (goimports, golangci-lint).
- Download project dependencies.
- Generate development certificates.
Development Commands
Running Examples
# Start the echo server
just run-echo-server
# In another terminal, run the echo client
just run-echo-client
Code Quality
# Format code
just fmt
# Run linter
just lint
# Run tests
just test
# Perform overall quality checks (formatting and linting)
just check
Build & Clean
# Build the code
just build
# Clean up generated files
just clean
Examples
The examples directory includes sample applications demonstrating how to use gomoqt:
- Echo Server and Client (
echo/
): A simple echo server and client implementation.
- More samples coming soon…
Documentation
Contributing
We 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:
just fmt
just lint
just test
- Commit your changes (
git commit -m 'Add amazing feature'
).
- Push your branch (
git push origin feature/amazing-feature
).
- Open a Pull Request.
License
This project is licensed under the MIT License; see LICENSE for details.
Acknowledgments