Skip to main content

A performant web native pixel delivery pipeline for diverse sources, blending VNC-inspired parallel processing of pixel buffers with flexible modern encoding formats.

Project description

pixelflux

PyPI version License: MPL 2.0

A performant web native pixel delivery pipeline for diverse sources, blending VNC-inspired parallel processing of pixel buffers with flexible modern encoding formats.

This module provides a Python interface to a high-performance C++ capture library. It captures pixel data from a source (currently X11 screen regions), detects changes, and encodes modified stripes into JPEG or H.264. It supports CPU-based encoding (libx264, libjpeg-turbo) as well as hardware-accelerated H.264 encoding via NVIDIA's NVENC and VA-API for Intel/AMD GPUs. The resulting data is delivered efficiently to your Python application via a callback mechanism.

Installation

This module relies on a native C++ extension that is compiled during installation.

  1. Prerequisites (for Debian/Ubuntu): Ensure you have a C++ compiler (g++) and development files for Python, X11, Xfixes, XShm, libjpeg-turbo, and libx264. These are required for the base software encoding functionality.

    sudo apt-get update && \
    sudo apt-get install -y \
      g++ \
      libdrm-dev \
      libjpeg-turbo8-dev \
      libva-dev \
      libx11-dev \
      libx264-dev \
      libxext-dev \
      libxfixes-dev \
      libyuv-dev \
      python3-dev
    
  2. Hardware Acceleration (Optional but Recommended):

    • NVIDIA (NVENC): No extra packages are needed at compile time. If you have the NVIDIA driver installed, the library will be detected and used automatically at runtime.
    • Intel/AMD (VA-API): The libva-dev and libdrm-dev packages listed above are sufficient for compilation. Ensure you have the correct VA-API drivers for your hardware installed (e.g., intel-media-va-driver-non-free for Intel, mesa-va-drivers for AMD).
  3. Install the Package: You can install directly from PyPI or from a local source clone.

    Option A: Install from PyPI

    pip install pixelflux
    

    Option B: Install from a local source directory

    # From the root of the project repository
    pip install .
    

    Note: The current backend is designed and tested for Linux/X11 environments.

Usage

Capture Settings

The CaptureSettings class allows for detailed configuration of the capture process.

# All attributes of the CaptureSettings object are standard ctypes properties.
settings = CaptureSettings()

# --- Core Capture ---
settings.capture_width = 1920
settings.capture_height = 1080
settings.capture_x = 0
settings.capture_y = 0
settings.target_fps = 60.0
settings.capture_cursor = True

# --- Encoding Mode ---
# 0 for JPEG, 1 for H.264
settings.output_mode = 1
# Force CPU encoding and ignore hardware encoders
capture_settings.use_cpu = False

# --- Debugging ---
settings.debug_logging = False # Enable/disable the continuous FPS and settings log to the console.

# --- JPEG Settings ---
settings.jpeg_quality = 75              # Quality for changed stripes (0-100)
settings.paint_over_jpeg_quality = 90   # Quality for static "paint-over" stripes (0-100)

# --- H.264 Settings ---
settings.h264_crf = 25                   # CRF value (0-51, lower is better quality/higher bitrate)
settings.h264_paintover_crf = 18         # CRF for H.264 paintover on static content. Must be lower than h264_crf to activate.
settings.h264_paintover_burst_frames = 5 # Number of high-quality frames to send in a burst when a paintover is triggered.
settings.h264_fullcolor = False          # Use I444 (full color) instead of I420 for software encoding
settings.h264_fullframe = True           # Encode full frames (required for HW accel) instead of just changed stripes
settings.h264_streaming_mode = False     # Bypass all VNC logic and work like a normal video encoder, higher constant CPU usage for fullscreen gaming/videos

# --- Hardware Acceleration ---
# Set to >= 0 to enable VA-API on a specific /dev/dri/renderD* node.
# Set to -1 to disable VA-API and let the system try NVENC if available.
settings.vaapi_render_node_index = -1

# --- Change Detection & Optimization ---
settings.use_paint_over_quality = True  # Enable paint-over/IDR requests for static regions
settings.paint_over_trigger_frames = 15 # Frames of no motion to trigger paint-over
settings.damage_block_threshold = 10    # Consecutive changes to trigger "damaged" state
settings.damage_block_duration = 30     # Frames a stripe stays "damaged"

# --- Watermarking ---
# Must be a bytes object. The path to your PNG image.
settings.watermark_path = b"/path/to/your/watermark.png" 
# 0:None, 1:TopLeft, 2:TopRight, 3:BottomLeft, 4:BottomRight, 5:Middle, 6:Animated
settings.watermark_location_enum = 4 

Stripe Callback and Data Structure

Your callback function receives a ctypes.POINTER(StripeEncodeResult). You must access its fields via the .contents attribute.

The StripeEncodeResult struct has the following fields:

# This is an illustrative Python representation of the C++ struct.
class StripeEncodeResult(ctypes.Structure):
    _fields_ = [
        ("type", ctypes.c_int),             # 1 for JPEG, 2 for H.264
        ("stripe_y_start", ctypes.c_int),
        ("stripe_height", ctypes.c_int),
        ("size", ctypes.c_int),             # The size of the data in bytes
        ("data", ctypes.POINTER(ctypes.c_ubyte)), # Pointer to the encoded data
        ("frame_id", ctypes.c_int),         # Frame counter for this stripe
    ]

Memory Management: The data pointed to by result.contents.data is valid only within the scope of your callback function. The C++ library automatically frees this memory after your callback returns. To use the data, you must copy it, for example by using ctypes.string_at(result.contents.data, result.contents.size).

Features

  • Efficient Pixel Capture: Leverages a native C++ module using XShm for optimized X11 screen capture performance.
  • Flexible Encoding Backends:
    • Software: libx264 (H.264) and libjpeg-turbo (JPEG).
    • Hardware: NVIDIA NVENC and VA-API (Intel, AMD).
  • Stripe-Based Processing: For software encoding, can divide the screen into horizontal stripes and process them in parallel across CPU cores.
  • Change Detection: Encodes only stripes that have changed (based on an XXH3 hash comparison) since the last frame, significantly reducing processing load and bandwidth for software encoding modes.
  • Dynamic Watermarking: Overlay a PNG image on the captured video. The watermark can be pinned to a corner, centered, or animated to bounce around the screen.
  • Dynamic Quality Optimizations:
    • Paint-Over for Static Regions: After a region remains static for paint_over_trigger_frames, it is resent at high quality (JPEG) or as a new IDR frame (H.264) to correct any compression artifacts.
    • Damage Throttling: For highly active regions, the system can temporarily reduce the frequency of change detection to save CPU cycles.
  • Direct Callback Mechanism: Provides encoded stripe data directly to your Python code for real-time processing or streaming.

Example: Real-time H.264 Streaming with WebSockets

A comprehensive example, screen_to_browser.py, is located in the example directory of this repository. This script demonstrates robust, real-time screen capture, H.264 encoding, and streaming via WebSockets. It sets up:

  • An asyncio-based WebSocket server to stream encoded H.264 frames.
  • An HTTP server to serve a client-side HTML page for viewing the stream.
  • The pixelflux module to perform the screen capture and encoding.

To run this example:

Note: This example assumes you are on a Linux host with a running X11 session.

  1. First, ensure you have the websockets library installed:

    pip install websockets
    
  2. Navigate to the example directory within the repository:

    cd example
    
  3. Execute the Python script:

    python3 screen_to_browser.py
    
  4. Open your web browser and go to the URL indicated by the script's output (usually http://localhost:9001) to view the live stream.

License

This project is licensed under the Mozilla Public License Version 2.0. A copy of the MPL 2.0 can be found at https://mozilla.org/MPL/2.0/.

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

pixelflux-1.3.3.tar.gz (234.5 kB view details)

Uploaded Source

Built Distributions

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

pixelflux-1.3.3-cp313-cp313-musllinux_1_2_x86_64.whl (3.7 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

pixelflux-1.3.3-cp313-cp313-musllinux_1_2_aarch64.whl (3.5 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

pixelflux-1.3.3-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

pixelflux-1.3.3-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (1.7 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

pixelflux-1.3.3-cp312-cp312-musllinux_1_2_x86_64.whl (3.7 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

pixelflux-1.3.3-cp312-cp312-musllinux_1_2_aarch64.whl (3.5 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

pixelflux-1.3.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

pixelflux-1.3.3-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (1.7 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

pixelflux-1.3.3-cp311-cp311-musllinux_1_2_x86_64.whl (3.7 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

pixelflux-1.3.3-cp311-cp311-musllinux_1_2_aarch64.whl (3.5 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

pixelflux-1.3.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

pixelflux-1.3.3-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (1.7 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

pixelflux-1.3.3-cp310-cp310-musllinux_1_2_x86_64.whl (3.7 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

pixelflux-1.3.3-cp310-cp310-musllinux_1_2_aarch64.whl (3.5 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

pixelflux-1.3.3-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

pixelflux-1.3.3-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (1.7 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

pixelflux-1.3.3-cp39-cp39-musllinux_1_2_x86_64.whl (3.7 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ x86-64

pixelflux-1.3.3-cp39-cp39-musllinux_1_2_aarch64.whl (3.5 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ ARM64

pixelflux-1.3.3-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

pixelflux-1.3.3-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (1.7 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

pixelflux-1.3.3-cp38-cp38-musllinux_1_2_x86_64.whl (3.7 MB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ x86-64

pixelflux-1.3.3-cp38-cp38-musllinux_1_2_aarch64.whl (3.5 MB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ ARM64

pixelflux-1.3.3-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

pixelflux-1.3.3-cp38-cp38-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (1.7 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

File details

Details for the file pixelflux-1.3.3.tar.gz.

File metadata

  • Download URL: pixelflux-1.3.3.tar.gz
  • Upload date:
  • Size: 234.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.2

File hashes

Hashes for pixelflux-1.3.3.tar.gz
Algorithm Hash digest
SHA256 0fd2e7ce66c9863d6b444f38806b62594d2ec84ede79594c883a970d0acf2c6f
MD5 7efb45e0b156ae2a9a5d943d8d8a7e30
BLAKE2b-256 284c077e7d4140d89840ff4f5824fd00b1bcbb27348effd444bd8da2574be871

See more details on using hashes here.

File details

Details for the file pixelflux-1.3.3-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pixelflux-1.3.3-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 bd4e8c9e667b067ecba7e55fbbf32202b902a2de0e15ab11a7991fa37751ef2b
MD5 44d6cedac93d00e04d5cced94c33bd4c
BLAKE2b-256 016c17a75d9bd1a4f82a1d0b069c1ad73f573c79d8363de2fdb199276f26acae

See more details on using hashes here.

File details

Details for the file pixelflux-1.3.3-cp313-cp313-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pixelflux-1.3.3-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 0cd3ea1a512aa830729a1a1754b2527f2f03d4e78b4bc85534308ffd61b554ec
MD5 5a27c8f1131c10aee7407407b637a166
BLAKE2b-256 c5515ec06bae7c650d823271ad2e741e19dbe125b1f6f35c3f2fbcd3c7777e4a

See more details on using hashes here.

File details

Details for the file pixelflux-1.3.3-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pixelflux-1.3.3-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b09889879460017cc7a9cc2183cab05ef8c3f119dc085523ed69552e86637c01
MD5 a4a621899c1437027fab0e0ab069bad2
BLAKE2b-256 5c1a724e0696423652a51eec45a7bbb30dbd0e604d5a35402b231622dc811959

See more details on using hashes here.

File details

Details for the file pixelflux-1.3.3-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pixelflux-1.3.3-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 86541fc902c0903e523899e04b1fe8555169b89dfd5c2a69a317d9c0c2dfad73
MD5 feeee73bbe4b198c80453e8342efb8d0
BLAKE2b-256 be82523cff712cf81e0e818a6c70a096a0da410ffe1d843cf71f6d38051aca1d

See more details on using hashes here.

File details

Details for the file pixelflux-1.3.3-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pixelflux-1.3.3-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 cb16a47bf643eaa09ebcb429b9d848abb0d4d3de76e6f1cdf293f4a70553464a
MD5 8f275ff56fc05ecf396bdaa661983d6e
BLAKE2b-256 fee624bfd5fb7f419439cf52df12a6f2057b18220ff850ce7a39c9481bb09845

See more details on using hashes here.

File details

Details for the file pixelflux-1.3.3-cp312-cp312-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pixelflux-1.3.3-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 f59deca5f093a87e17de49c182f4d4750a18a9dfc1debeb42e875ce4022cbb39
MD5 cbabd5d0b8e557dd9f27dc6fd8b9042f
BLAKE2b-256 a3106218d3804373bd1e6e6759a0c8c16009058806300f9404c38ed530808f4c

See more details on using hashes here.

File details

Details for the file pixelflux-1.3.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pixelflux-1.3.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 32be61c85ffb6d37da8d9fcd1ba950077473034747a9517a7dccd9db544ce0b4
MD5 be656ba7f50a908f6a137ed8587eb9eb
BLAKE2b-256 d8e5c7647f80173ee601e6b4ed272981490cf39dafcdab4b50e425a81f6902e0

See more details on using hashes here.

File details

Details for the file pixelflux-1.3.3-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pixelflux-1.3.3-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b5c05abc6ea931deb96517dc2721e2761a67d058a20b212d097aead8fb1c0d7f
MD5 7f67da14a410256dedd6e073be24d8a2
BLAKE2b-256 5c7211c3f89c3b50feed60860805ad7265c2f0b7d4621ef58d48befffb297c2f

See more details on using hashes here.

File details

Details for the file pixelflux-1.3.3-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pixelflux-1.3.3-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 9b0b7c9c667fd91ef07a671c36db741bcaabab25945dd942a894b3f82587c651
MD5 e5c2e042dcfd485c0b521cc16776a7b2
BLAKE2b-256 96adbf3b094fd441b45ea6dd5b64b84d5207e5d4feead5dd64e11e29294b5491

See more details on using hashes here.

File details

Details for the file pixelflux-1.3.3-cp311-cp311-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pixelflux-1.3.3-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 a6978f7a505d85d0a735f60fe45ae14bf089a7c929073646851fe3237d7b52e7
MD5 2bae747d19b0157682b78ce11219e7dc
BLAKE2b-256 ab1b771e4003f27be57a6d5b9606e18346b39ed3d8ea1f3c2f6d3eac80ad97f3

See more details on using hashes here.

File details

Details for the file pixelflux-1.3.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pixelflux-1.3.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 cf23d52a00f59610046f20142539c4141a7961d593dc72d5c3f7913650521920
MD5 a7b6a2979fb23054b5822b7685a08c97
BLAKE2b-256 2f14f5c7ada6209f6bd72c3e3d9b20558cbb7c5a84fa56a0bb4b021c796f5902

See more details on using hashes here.

File details

Details for the file pixelflux-1.3.3-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pixelflux-1.3.3-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 971266440c2314d07272c5a870d6ff959e781fa7d77396d57393e310073e7487
MD5 3df48435dbcfe7ba43295ac2fea2da4b
BLAKE2b-256 b5fad9f4c8cbd1b1c94fe514bffb4fef9718d88c298bd3341476c7ca408ab6a7

See more details on using hashes here.

File details

Details for the file pixelflux-1.3.3-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pixelflux-1.3.3-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a4f078309ad8a5e947e7bf05b9514c4f5a3995e8d72372e7c93688b792d8c970
MD5 61cec9d0ac90e25170c550c6de2290d9
BLAKE2b-256 1321d339bad12d941fa2ef0b3636051424364cb07763584d24d609e9a70b6bbf

See more details on using hashes here.

File details

Details for the file pixelflux-1.3.3-cp310-cp310-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pixelflux-1.3.3-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 34b11afaf847706efbd87e671c33e01c2d2a6da6b4b1d845dca068c3420d0ba1
MD5 67c55d3a22bd4b64bd4e4571158ca64c
BLAKE2b-256 0f459354d3312763c14d818c068830e2741bda5868a6510c9442337afc020acf

See more details on using hashes here.

File details

Details for the file pixelflux-1.3.3-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pixelflux-1.3.3-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 86bb5b31c6defa76f2998bf6eba4df44dad791ddf3fb7a635ad1e3b8e1fb0dda
MD5 a830d147a855f0655a7b85a91b0cd780
BLAKE2b-256 1ba1080e475a4a206bad046b8e0aa461ee2a7e5bea1943ed1f539072d88bfc51

See more details on using hashes here.

File details

Details for the file pixelflux-1.3.3-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pixelflux-1.3.3-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 82964c4c7a5b4950bdf325af41ffcc6c6ff2f790ff7318d1cf484c96ef7f40cc
MD5 d23ad1a6eec60a1c880a51dd2d2aa34d
BLAKE2b-256 28050d2334f120a1409c2c3f8718327b4d9ffab68307edbb7c2eff88408520c9

See more details on using hashes here.

File details

Details for the file pixelflux-1.3.3-cp39-cp39-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pixelflux-1.3.3-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 242f004f71222a7c768baf6d859c732fe3bb3e80f145095116641f1d8d2b4385
MD5 09a089be3d5d9e26b7da1a57913ee12e
BLAKE2b-256 fd02a343e99c3b454d4ab706d57b97a4f162e05b2c8b73d35933573e67574694

See more details on using hashes here.

File details

Details for the file pixelflux-1.3.3-cp39-cp39-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pixelflux-1.3.3-cp39-cp39-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 32d635c7b066d413ef7b69f828801b7ee27889b141875cde4a1eaff2c6433c25
MD5 04a66ecaacec96677c6bd991f6635641
BLAKE2b-256 b997f4a51f09c132aa3076e230e5fde219dc6cd41542fbbe57589df641d20393

See more details on using hashes here.

File details

Details for the file pixelflux-1.3.3-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pixelflux-1.3.3-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4e8118938d3e6d1b63ef5834215b862e3f3d6e03a21e9e56758523c351190eef
MD5 774d45d469bb433bac476e7008e7a83f
BLAKE2b-256 160c0ad2038b6a2f3ed27ae7370c11f099dd2b746622e7f799e4f70812cda180

See more details on using hashes here.

File details

Details for the file pixelflux-1.3.3-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pixelflux-1.3.3-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 69a0c977119f936266835bcc59d66d5f78db6c4d555b5d8b164237299c737015
MD5 22bd453cb58e141f44069513608f5c77
BLAKE2b-256 070169a6c5e923e9ee92c2732bd6b14179e4a529f178853081ed54bb5a3cfb3c

See more details on using hashes here.

File details

Details for the file pixelflux-1.3.3-cp38-cp38-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pixelflux-1.3.3-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 7379aca88db8338a874a45498c3cd74a9df628ed0bcd8753b66369351465ea83
MD5 dbc36195fc59077ece103040173e263f
BLAKE2b-256 5108537f02f0f0888d9b879e55db01afbe2daadc57ecb707df24b56673ea7f06

See more details on using hashes here.

File details

Details for the file pixelflux-1.3.3-cp38-cp38-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pixelflux-1.3.3-cp38-cp38-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 3c9fc21e82f61850509392ec5cf73da1886a0b1fdd746eaed90bce16d584d5c0
MD5 403f3522a06b93cfc2f990cb6bce3507
BLAKE2b-256 937de028a42a6c4da8f3039f027b23fa7d9f852bbe88a99cb4963aeada98828f

See more details on using hashes here.

File details

Details for the file pixelflux-1.3.3-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pixelflux-1.3.3-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2603b590c3da422f2c54e845c7bcfffc30a384046ddfe5ebc521a876eb27b9f1
MD5 d84642840d42b76af62beb254e38c6f0
BLAKE2b-256 68b34b970dd66f6fbbb0c01ed3d251961e2d9cfcbc3583e5e63378a8c6db38b8

See more details on using hashes here.

File details

Details for the file pixelflux-1.3.3-cp38-cp38-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pixelflux-1.3.3-cp38-cp38-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 baec4d0e3d5646ec90116061d75b3a9723731831ba845bf66ea2c2065852df57
MD5 481622a6fbb81982efe6544977961f44
BLAKE2b-256 7bc77eead734d6b8643b7f280e3c610e91801d9756ea6124702238c41fb2a29b

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