Asyncio interface to the Pulseaudio and Pipewire pulse library.
Project description
Asyncio interface to the Pulseaudio and Pipewire pulse library.
libpulse is a Python project based on asyncio, that uses ctypes to interface with the pulse library of the PulseAudio and PipeWire sound servers. The interface is meant to be complete. That is, all the constants, structures, plain functions and async functions are made available by importing the libpulse module of the libpulse package.
It includes the pactl.py module, a Python implementation of the pactl command that runs both on Pulseaudio and Pipewire. The output of most pactl.py subcommands can be parsed by Python and when redirected to a file, the file can be imported as a Python module. For example start an interactive Python session and inspect the cards object with all its nested sructures and dereferenced pointers with:
$ ./pactl.py list cards > cards.py && python -i cards.py
Calling an async function is simple:
import asyncio
from libpulse.libpulse import LibPulse
async def main():
async with LibPulse('my libpulse') as lib_pulse:
sink = await lib_pulse.pa_context_get_sink_info_by_index(0)
print('sample_spec rate:', sink.sample_spec.rate)
print('proplist names:', list(sink.proplist.keys()))
asyncio.run(main())
Another example processing sink-input events:
import asyncio
from libpulse.libpulse import LibPulse, PA_SUBSCRIPTION_MASK_SINK_INPUT
async def main():
async with LibPulse('my libpulse') as lib_pulse:
await lib_pulse.pa_context_subscribe(
PA_SUBSCRIPTION_MASK_SINK_INPUT)
iterator = lib_pulse.get_events_iterator()
async for event in iterator:
# 'event' is an instance of PulseEvent.
some_function_to_process_the_event(event)
asyncio.run(main())
See the libpulse documentation.
Requirements
Python version 3.8 or more recent.
Installation
Install libpulse with pip:
$ python -m pip install libpulse
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
Built Distribution
File details
Details for the file libpulse-0.4.tar.gz
.
File metadata
- Download URL: libpulse-0.4.tar.gz
- Upload date:
- Size: 52.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: python-requests/2.32.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 31fae6af37d5de7ae819757d14931ab58bb2b1709f7eee388860b8028a6b610c |
|
MD5 | 5e9cbaaf22b80a9229d0f0b97ebd4ad0 |
|
BLAKE2b-256 | d4169820376356b87b99a1310ca1249c40b5e8e19bf92d13706bf8ab8d90438c |
File details
Details for the file libpulse-0.4-py3-none-any.whl
.
File metadata
- Download URL: libpulse-0.4-py3-none-any.whl
- Upload date:
- Size: 43.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: python-requests/2.32.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1cdc1821eca95c06f11fc84da76d37e0b653b3321c3a8f9dcc05c1f7fa8b4bf3 |
|
MD5 | ec3d7a83ec302cc419f2efb1c1284040 |
|
BLAKE2b-256 | 3aa8732c5468631e80a295440c5fd3fdb258dc8952c49ffd7b114436152f0124 |