Skip to main content

moq-lite

Ergonomic Python wrapper for MoQ (Media over QUIC) — a next-generation live media delivery protocol providing real-time latency at massive scale.

moq-lite wraps the auto-generated moq-ffi bindings with a Pythonic API: no Moq prefixes, async iterators, context managers, and simplified connection setup.

Installation

pip install moq-lite

Quick Start

Subscribe to a stream

import asyncio
import moq_lite as moq

async def main():
    async with moq.Client("https://relay.quic.video") as client:
        async for announcement in client.announced():
            catalog = await announcement.broadcast.catalog()

            for name in catalog.audio:
                async for frame in announcement.broadcast.subscribe_media(name):
                    print(f"Got frame: {len(frame.payload)} bytes, ts={frame.timestamp_us}")

asyncio.run(main())

Publish a stream

import asyncio
import moq_lite as moq

async def main():
    async with moq.Client("https://relay.quic.video") as client:
        broadcast = moq.BroadcastProducer()

        # Publish an Opus audio track (init bytes from your encoder)
        audio = broadcast.publish_media("opus", opus_init_bytes)
        client.publish("my-stream", broadcast)

        # Write frames
        audio.write_frame(payload, timestamp_us=0)
        audio.write_frame(payload, timestamp_us=20000)

        # Clean up
        audio.finish()
        broadcast.finish()

asyncio.run(main())

Advanced: Manual origin wiring

For full control over the origin topology:

import moq_lite as moq

origin = moq.OriginProducer()
client = moq.Client(
    "https://relay.quic.video",
    publish=origin,
    subscribe=origin,
)

API

Connection

  • Client(url, *, tls_verify=True, publish=None, subscribe=None) — async context manager for connecting to a relay

Publishing

  • BroadcastProducer() — create a broadcast to publish tracks into
    • .publish_media(format, init) → MediaProducer
    • .finish()
  • MediaProducer — write frames to a track
    • .write_frame(payload, timestamp_us)
    • .finish()

Subscribing

  • BroadcastConsumer — subscribe to tracks within a broadcast
    • .subscribe_catalog() → CatalogConsumer
    • .subscribe_media(name, max_latency_ms=10000) → MediaConsumer
    • await .catalog() → Catalog (convenience)
  • CatalogConsumer — async iterator of Catalog
  • MediaConsumer — async iterator of Frame

Origin (advanced)

  • OriginProducer() — manage broadcast announcements
    • .consume() → OriginConsumer
    • .publish(path, broadcast)
  • OriginConsumer — discover broadcasts
    • .announced(prefix) → Announced (async iterator)
    • .announced_broadcast(path) → AnnouncedBroadcast (awaitable)

Types

  • Catalog — .audio: dict[str, Audio], .video: dict[str, Video], .display, .rotation, .flip
  • Frame — .payload: bytes, .timestamp_us: int, .keyframe: bool
  • Audio — .codec, .sample_rate, .channel_count, .bitrate, .description
  • Video — .codec, .coded: Dimensions, .display_ratio, .bitrate, .framerate, .description
  • Dimensions — .width: int, .height: int

See Also

  • moq-ffi — raw UniFFI bindings (lower-level)
  • MoQ project — full monorepo with Rust server, TypeScript browser lib, and more

Metadata

Release files for moq-lite 0.0.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for moq-lite 0.0.3
File Size Uploaded Provenance Actions
moq_lite-0.0.3.tar.gz 8.1 kB Without provenance Details for moq_lite-0.0.3.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for moq-lite 0.0.3
File Interpreter ABI Platform Actions
moq_lite-0.0.3-py3-none-any.whl Python 3 none any Details for moq_lite-0.0.3-py3-none-any.whl

Total release size: 15.6 kB

Release files / moq_lite-0.0.3.tar.gz

Download URL moq_lite-0.0.3.tar.gz
Size 8.1 kB
Tags Source
SHA-256 checksum
How to use checksums
77c8887fdd97e592f07a097bfd9ac8a4e894eb2868692cf1e37a9be998056388
BLAKE2b-256 checksum
How to use checksums
bb40fbea8253b1322b2d54acaaec7da1e1ae7c157dc9ae05ee29019bb8c29c3c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.11.2 {"installer":{"name":"uv","version":"0.11.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / moq_lite-0.0.3-py3-none-any.whl

Download URL moq_lite-0.0.3-py3-none-any.whl
Size 7.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
177cbaf87c947bcf60994f4f20d9545b18797e811de359e70897ce997167940e
BLAKE2b-256 checksum
How to use checksums
3eb059db3e3fed2462ea8b51ace5490b79313acf7ca0eae43da4d80c205a766b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.11.2 {"installer":{"name":"uv","version":"0.11.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Security for moq-lite 0.0.3

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page