Skip to main content

Python asyncio implementation of the MoQT protocol

Project description

aiomoqt - Media over QUIC Transport (MoQT)

aiomoqt is an implementaion of the MoQT protocol, based on aioquic and asyncio.

Overview

This package implements the MoQT Specification (currently draft-08). It is desinged for general use as an MoQT client and server library. The architecture is based on asyncio, and extends the aioquic protocol. Currently most MoQT control messages are parsed and serialized.

Featurtes

  • Serialization and deserialization of messages and data streams.
  • A session protocol class with MoQT message registry.
  • An extensible API allowing custom handlers for responses and incoming messages.
  • Support for both asynchronous and synchronous calls using the wait_response flag.

🚀 Status: Alpha

Installation

Install using pip:

pip install aiomoqt

Or using uv:

uv pip install aiomoqt

Usage

Basic Client Example

import asyncio
from aiomoqt.client import MOQTClientSession

    client = MOQTClientSession(host=127.0.0.1, port=443, endpoint='wt-endpoint')

    async with client.connect() as session:
        try:
            await session.client_session_init():
            response = await session.subscribe(
                'namespace', 
                'track_name',
                wait_response=True
            )
            # wait for session close, process data and control messages
            await session.async_closed()
        except MOQTException as e:
            session.close(e.error_code, e.reason_phrase)

asyncio.run(main())

see aiomoqt-python/aiomoqt/examples for additional examples

Development

To set up a development environment:

git clone https://github.com/gmarzot/aiomoqt-python.git
cd aiomoqt-python
./bootstrap_python.sh
source .venv/bin/activate

Installation

uv pip install .

TODO

  • Datagram Object Data
  • FETCH/OK, Joining FETCH/OK,
  • Direct QUIC connection
  • GOAWAY, SUBSCRIBE_UPDATE, ANNOUNCE (beyond the basic), etc.
  • Move track data read/write API to aiomoqt.messages.track
  • Support file I/O MOQT File Format
  • Real tests

Contributing

Contributions are welcome! If you'd like to contribute, please:

  • Fork the repository on GitHub.
  • Create a new branch for your feature or bug fix.
  • Submit a pull request with a clear description of your changes.

For major changes, please open an issue first to discuss your proposal.

Resources


Acknowledgements

This project takes inspiration from, and has benefited from the great work done by the Meta/moxygen team, and the efforts of the MOQ IETF WG.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aiomoqt-0.3.1.tar.gz (29.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

aiomoqt-0.3.1-py3-none-any.whl (33.9 kB view details)

Uploaded Python 3

File details

Details for the file aiomoqt-0.3.1.tar.gz.

File metadata

  • Download URL: aiomoqt-0.3.1.tar.gz
  • Upload date:
  • Size: 29.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.16

File hashes

Hashes for aiomoqt-0.3.1.tar.gz
Algorithm Hash digest
SHA256 def18317e71fde8be624edbc5796c24e8413b902feed5ff55f34577a48b0ab2f
MD5 0b8b737fe1f7eabb2c7c76062ef212df
BLAKE2b-256 a769abda3246344e38dcf698290450bb024e68e72a20603c92aa5ce37fcfe69b

See more details on using hashes here.

File details

Details for the file aiomoqt-0.3.1-py3-none-any.whl.

File metadata

  • Download URL: aiomoqt-0.3.1-py3-none-any.whl
  • Upload date:
  • Size: 33.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.16

File hashes

Hashes for aiomoqt-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 fe49a2d77b69248828412d0c1c27d6ea3ddb42292a48990dcd07af259befb4c2
MD5 6927f1b367c680be4a12be8a6f3cb3e5
BLAKE2b-256 377a915c2c1abae840ac80d4313a852a5433679e9f9ee89d49673fb596584173

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page