An asyncio VBAN implementation
Project description
VBAN Protocol Wrapper
Overview
This project aims to create a modern, ergonomic wrapper around the VBAN protocol. By leveraging modern Python tools such as dataclasses and asyncio, this wrapper provides a simple and efficient interface for working with VBAN.
Features
- Dataclasses: Utilizes Python's dataclasses for clean, concise and ergonomic data structures.
- Asyncio: Supports asynchronous operations for non-blocking I/O.
- Ease of Use: Designed to be simple and intuitive, making it easy to integrate VBAN into your projects.
Installation
To install the package, use pip:
pip install aiovban
Usage
Basic Example
Here's a basic example of how to use the VBAN wrapper:
from aiovban import VBANAudioHeader, VBANPacket
from aiovban import VBANSampleRate
# Create a VBAN audio header
audio_header = VBANAudioHeader(sample_rate=VBANSampleRate.RATE_44100, channels=17, samples_per_frame=3,
bit_resolution=3, codec=0xf0, streamname="Channel1")
# Create a VBAN packet
packet = VBANPacket(header=audio_header)
# Access properties
print(packet.header.sample_rate) # Output: 44100
print(packet.header.samples_per_frame) # Output: 3
Asynchronous Example
Using asyncio for non-blocking operations:
client = AsyncVBANClient(ignore_audio_streams=False)
asyncio.create_task(client.listen('0.0.0.0', 6980)) # Listen for all incoming packets
windows_host = client.register_device('bill.local', 6980)
windows_mic_out = windows_host.receive_stream('Windows Mic Out')
command_stream = await windows_host.text_stream('Command1')
await command_stream.send_text('Strip[0].Gain = 0.5;')
await asyncio.sleep(1)
await command_stream.send_text('Command.Restart = 1;')
# DRAIN_OLDEST will dump half the queue when it becomes full
rt_stream = await windows_host.rt_stream(30, back_pressure_strategy=BackPressureStrategy.DRAIN_OLDEST)
print(await rt_stream.get_packet())
receiver = VBANAudioPlayer(stream=windows_mic_out)
Contributing
Contributions are welcome! Please fork the repository and submit a pull request with your changes.
License
This project is licensed under the MIT License. See the LICENSE
file for more details.
Contact
For any questions or issues, please open an issue on the GitHub repository.
This README provides a brief overview of the project, installation instructions, usage examples, and contribution guidelines.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file aiovban-0.3.0.tar.gz
.
File metadata
- Download URL: aiovban-0.3.0.tar.gz
- Upload date:
- Size: 14.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.10.15
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6195b6084bba4e31adae4afd923efa82650b8826d861e684c557804856cae7fe |
|
MD5 | c24404e65fcb243d350f803377e4d83c |
|
BLAKE2b-256 | 2c51c81013febce8c1c4adf47e1759590eef4ed5694c4063fa6faa8e529a7cdc |
File details
Details for the file aiovban-0.3.0-py3-none-any.whl
.
File metadata
- Download URL: aiovban-0.3.0-py3-none-any.whl
- Upload date:
- Size: 19.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.10.15
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4335d8be61d2aec0d14224511b6ad0f696237951c98bced2d202cbd4f089a62a |
|
MD5 | 86e7944809eeda31bcd450249d4f220d |
|
BLAKE2b-256 | 11de68dc6a769385790ae430083f2e56e393143356aaa0ba5e4564fc4839498e |