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++ \
      libavcodec-dev \
      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.
  • Dynamic capture region selection via the URL hash.

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 to view the live stream. You can control the capture area:

    • http://localhost:9001: Captures from the screen's top-left corner (x=0).
    • http://localhost:9001/#50: Captures a region starting at x=50.
    • You can open multiple browser tabs with different hash values to see multiple, independent capture sessions running from the single server instance.

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.4.5.tar.gz (232.4 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.4.5-cp313-cp313-musllinux_1_2_x86_64.whl (29.4 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

pixelflux-1.4.5-cp313-cp313-musllinux_1_2_aarch64.whl (27.3 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

pixelflux-1.4.5-cp313-cp313-manylinux_2_28_x86_64.whl (10.5 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

pixelflux-1.4.5-cp313-cp313-manylinux_2_28_aarch64.whl (9.9 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

pixelflux-1.4.5-cp312-cp312-musllinux_1_2_x86_64.whl (29.4 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

pixelflux-1.4.5-cp312-cp312-musllinux_1_2_aarch64.whl (27.3 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

pixelflux-1.4.5-cp312-cp312-manylinux_2_28_x86_64.whl (10.5 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

pixelflux-1.4.5-cp312-cp312-manylinux_2_28_aarch64.whl (9.9 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

pixelflux-1.4.5-cp311-cp311-musllinux_1_2_x86_64.whl (29.4 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

pixelflux-1.4.5-cp311-cp311-musllinux_1_2_aarch64.whl (27.3 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

pixelflux-1.4.5-cp311-cp311-manylinux_2_28_x86_64.whl (10.5 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

pixelflux-1.4.5-cp311-cp311-manylinux_2_28_aarch64.whl (9.9 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

pixelflux-1.4.5-cp310-cp310-musllinux_1_2_x86_64.whl (29.4 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

pixelflux-1.4.5-cp310-cp310-musllinux_1_2_aarch64.whl (27.3 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

pixelflux-1.4.5-cp310-cp310-manylinux_2_28_x86_64.whl (10.5 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

pixelflux-1.4.5-cp310-cp310-manylinux_2_28_aarch64.whl (9.9 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

pixelflux-1.4.5-cp39-cp39-musllinux_1_2_x86_64.whl (29.4 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ x86-64

pixelflux-1.4.5-cp39-cp39-musllinux_1_2_aarch64.whl (27.3 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ ARM64

pixelflux-1.4.5-cp39-cp39-manylinux_2_28_x86_64.whl (10.5 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ x86-64

pixelflux-1.4.5-cp39-cp39-manylinux_2_28_aarch64.whl (9.9 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ ARM64

pixelflux-1.4.5-cp38-cp38-musllinux_1_2_x86_64.whl (29.4 MB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ x86-64

pixelflux-1.4.5-cp38-cp38-musllinux_1_2_aarch64.whl (27.3 MB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ ARM64

pixelflux-1.4.5-cp38-cp38-manylinux_2_28_x86_64.whl (10.5 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.28+ x86-64

pixelflux-1.4.5-cp38-cp38-manylinux_2_28_aarch64.whl (9.9 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.28+ ARM64

File details

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

File metadata

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

File hashes

Hashes for pixelflux-1.4.5.tar.gz
Algorithm Hash digest
SHA256 b6f08f0f00988f3ae3ac353e4971528d93a7430a920c97532970a34d4ba17b7e
MD5 6ebe97cf0d53953cf6915e03245cb54d
BLAKE2b-256 4e955ac2782a85c723f32f0df66cc6d82a3e58dd7279821e1b99ff4b4b03cbe6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.5-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 70d57c1c5620c0381b0bbc2c4e2da45b8e44a4edd6d00cbeb9788f2c7b88b75f
MD5 324bcb55ace36c1774d1a4086f99b5c2
BLAKE2b-256 6f253c453208c9f6ed072de882fc248fbc0081f3e29702a50a8ef61e6ed58b07

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.5-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 3eaefa77cc78b5c489f9ce5dd4c06cd9fb0abfafe6729daedb3c2079777387f4
MD5 9026a626aa0d4d8ec7c8dbb6767b1d29
BLAKE2b-256 20a4db5b7bdb5a1268b98e4eb37f19f9312285bc37c021c6cad8e28fe8f9eedc

See more details on using hashes here.

File details

Details for the file pixelflux-1.4.5-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pixelflux-1.4.5-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7230fb62a9da2e70c706a39e70233df5563db3d05c0809d07f79ab2bcaf94056
MD5 26d84bf8a987e6d6c7ce7c4cbd27f700
BLAKE2b-256 0f0788ef0f97f0cae6a023b45eeb64347ce2f8f5a85785b89a14c325a0eb967f

See more details on using hashes here.

File details

Details for the file pixelflux-1.4.5-cp313-cp313-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pixelflux-1.4.5-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e9e0a5bfdc30fad98680411bdbf74b267fd320c0e913d88ce1c08e03def433cf
MD5 77655cbc7dbc118cced68bd91990bd71
BLAKE2b-256 b6231cdba97796c8653c13e0dfdedba8f008cedacbf95bef707db060832a2381

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.5-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 e6dc639d39023668c83740218805d783e81bd79519a37f5458b24de6cd25d5e1
MD5 d2d9d4642d973e01925bfa0f950d822f
BLAKE2b-256 66c2eae7d2de43c3ddc404d6b980d8004e8387bda105e7479afd751242c0a402

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.5-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 3fb8d543fb8aebfd2203b313b19fef663e02b3bb8fa30fd2efdf61a025f68f85
MD5 70c086d06fa452f1c5359494090316ab
BLAKE2b-256 f0b31838276b8a11b41bd7670ebce7a9073ad6b4836795024e0af5d192c150fa

See more details on using hashes here.

File details

Details for the file pixelflux-1.4.5-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pixelflux-1.4.5-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d4ce9c745e4165fc327eeaf5ebbf4792299199de02d7dd7c281db24306bf58d2
MD5 c90f77cdba2e915671d1a789d00c1288
BLAKE2b-256 cb448d4e1a192f1d9f8f8490e157608acbbd4dd676c2559ea177171a1d37d6a6

See more details on using hashes here.

File details

Details for the file pixelflux-1.4.5-cp312-cp312-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pixelflux-1.4.5-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 34246a23ceaa1b06706e33b8ebf3573e4c749c34ab3030a0f5f59016ca955a97
MD5 12f909d29c87ec8c0686e4ca8ddc8012
BLAKE2b-256 39306307886b508c768064c38c70ad3ef722178aea548bf84a82e13ee0d10c0c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.5-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 546358f02c15ee3de268b7c6e5130d09ba4352bf21c8219851457d6b9db59bf4
MD5 ce787b8ef7198a77bada1fad027aa4ab
BLAKE2b-256 58714062939b49267d3ad9da00dc5d540f439edaf7d051e2eb919a032996c423

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.5-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 933b98a5b4350bf2017f02249fd6a40e4904988eb8786a3179f6e460021612ab
MD5 f67db552d12d391cf45ab91de539d3fa
BLAKE2b-256 9f547ddf1023a488dd40225a477f812ca812f54b8e2a29f7276cb1a69d3551ad

See more details on using hashes here.

File details

Details for the file pixelflux-1.4.5-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pixelflux-1.4.5-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 cd2eddb565bc207455e8cc101535e3527ba3d7d3883180bd89901873264ff7f8
MD5 64905a8b649a9e7abadbe378004a34df
BLAKE2b-256 0047f72682f37e5d6a26a8fd6d35ff1c952084123015b338733503b65ffa9020

See more details on using hashes here.

File details

Details for the file pixelflux-1.4.5-cp311-cp311-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pixelflux-1.4.5-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 da98c2cf5708c975bac06dbf7c7168a5d2831686fc9c4b28b9f7639bc657666c
MD5 e142737295af0dd17f4523f99002bf17
BLAKE2b-256 a3368864c212e6275b299fb6cb84ec7e0e2f101519134301f4afc507e42e26a1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.5-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 fc8a6a988cd0448661657cc9f7c0ad60794a16f6d1389f35abdae1571604cc3c
MD5 a903c063f5130252cc4bae05807f40f7
BLAKE2b-256 443f8175af3cb1fdd58f7b2de2bdd6df8de4b2c78dc0c3ce47eeab525c4d6fad

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.5-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 fa508bd7fb7b8912f11ab2fca8c5a63dc9bf4c27f218c94d1007ad70dc2998bf
MD5 f170bbb7eefa56f2f090ea832fbf04ce
BLAKE2b-256 37f75339a853f434a5ab5d8e476156db85084bd92be767b0cacab93b06d2ce22

See more details on using hashes here.

File details

Details for the file pixelflux-1.4.5-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pixelflux-1.4.5-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9aa7ec6e53f6164f1ceb43d252fcd25617acbedbbc084a1372136a1aafa0cf9f
MD5 c7dd90944fe0d2251bf41a4aa6df5165
BLAKE2b-256 35d7b480841da680887c4c0b58eac428db338ffd7462cfaf8ba2066bc601ecb2

See more details on using hashes here.

File details

Details for the file pixelflux-1.4.5-cp310-cp310-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pixelflux-1.4.5-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 f3365c337c4128d19660f0ca6d25948f2907366016bb037f609986c225b87b7d
MD5 290beec5253978a60665ebac93575323
BLAKE2b-256 62a3a9a270bce1947fe807abde6813c80d850ee333ae7e07720d265a7eaf04cf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.5-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 602b5df5d0238a8e58344ca5b6ea3308465f5f852835ae26cf0c1ed73a78d9cb
MD5 f4b473a6326aef0032cc968cad7c733f
BLAKE2b-256 fb81b7d32921086390159979f329b414b284862e46284d446a58969c2031ea4c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.5-cp39-cp39-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 03fa3f7860656de10ca53b8e46fd51009d3877a2f168957ed9c681a2af995ecf
MD5 de39f29c1255b6786805e62e5335390d
BLAKE2b-256 4e35f3c3ad7ab43aa2755497635b971aa177e8c236e5e5ce40a0d53d869134d0

See more details on using hashes here.

File details

Details for the file pixelflux-1.4.5-cp39-cp39-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pixelflux-1.4.5-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 98a4915cd2f01ec0c6f666f32c8eb38584889a4656b9c0c2f4628809b44a8cf3
MD5 d6058ba0553a47e2b17a78dcd9965975
BLAKE2b-256 88add2194bdb30d6dd13e8da5dadf816af0742b7205a6bb41a4659f1f7dd09be

See more details on using hashes here.

File details

Details for the file pixelflux-1.4.5-cp39-cp39-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pixelflux-1.4.5-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 7e82fd0163204a217c91b0e4a91e52780efc1e0589da6fe3c64eeaee7395d6e2
MD5 95bf2ea0fa6e276f704c7c44f3ba5066
BLAKE2b-256 5a1044aa03a40ca720189fb0aa28411efec912154a0c1d96f44629db1f7558ae

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.5-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 3ce18f3d8418ebc8dd0c85a488ef14da7ffe14d392aa9b24ba05ceb4607b10fa
MD5 d0c1d029777877bcc5a395f2de6b5cc2
BLAKE2b-256 abec93908785184de850ed55a2799fe22e93def5894586302bd90cb3807710ed

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.5-cp38-cp38-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 89d5238d753862b5394d4df3c75dbae0243203ff2d11eb117d7773b5dc9e06c8
MD5 6afbc608e2e122e8179c291b5f10e260
BLAKE2b-256 db6880d61fcb0280eccf7ac9d27b19bc7cdd0ecd2bd7eed344dd6042477c919c

See more details on using hashes here.

File details

Details for the file pixelflux-1.4.5-cp38-cp38-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pixelflux-1.4.5-cp38-cp38-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 65513b495d17b8d0b5aa0a32e0e36dceeaab8c9234dedadcf4b17ffc7e0633a9
MD5 7325f4b25e44a2924394cd704b5052e1
BLAKE2b-256 0a9124872235fcc5455822c96b3ec94be8a1ff209a103afd4ad62fe52d549221

See more details on using hashes here.

File details

Details for the file pixelflux-1.4.5-cp38-cp38-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pixelflux-1.4.5-cp38-cp38-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 c0ba593c9b4a56be5f979b886df52317ed2b255c42330aba225a36ae9e5a75dc
MD5 feec0b833b4c6c4064720be400c6e591
BLAKE2b-256 76f7ad417562db61f2427d8c45627e8e2375d2dd8c905f083e902fd872f8649c

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