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

# --- 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.2.tar.gz (233.8 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.2-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.2-cp313-cp313-musllinux_1_2_aarch64.whl (3.5 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

pixelflux-1.3.2-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.2-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.2-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.2-cp312-cp312-musllinux_1_2_aarch64.whl (3.5 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

pixelflux-1.3.2-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.2-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.2-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.2-cp311-cp311-musllinux_1_2_aarch64.whl (3.5 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

pixelflux-1.3.2-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.2-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.2-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.2-cp310-cp310-musllinux_1_2_aarch64.whl (3.5 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

pixelflux-1.3.2-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.2-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.2-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.2-cp39-cp39-musllinux_1_2_aarch64.whl (3.5 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ ARM64

pixelflux-1.3.2-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.2-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.2-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.2-cp38-cp38-musllinux_1_2_aarch64.whl (3.5 MB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ ARM64

pixelflux-1.3.2-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.2-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.2.tar.gz.

File metadata

  • Download URL: pixelflux-1.3.2.tar.gz
  • Upload date:
  • Size: 233.8 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.2.tar.gz
Algorithm Hash digest
SHA256 ccf8e89fe3ae6ac5b815fa8236c901bdbd695c6dcc1dec2f3738b0b4f02e7e36
MD5 5838f53300ba3cf449bf8323a7603326
BLAKE2b-256 6aad797b021106ca10eb2abd78f9ff703ae4d773062f02a3065caca87d750ed5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.3.2-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 cf1a57db568fbf93ac3187c42cd164c7b833d8eccc47e2f1dfc5545b6a64f69e
MD5 a9cd133ef6830ada57b51396c777af0a
BLAKE2b-256 d2a5d804698923db87b48f13eb13765bd9beae2579a18c64fa419762ca4009c8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.3.2-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 26a876bb7b2b4c40476537e7038edb39eb87068e11d6e15dd8a1df471072f4b5
MD5 f0edfd1f5ad23232d5b6cf1dfbb7ae53
BLAKE2b-256 edefcc1297d2a38423ecd6f55fb529028d2d6da588df5fc24ad20d7d60365a42

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.3.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4d8217b5f8e0f261579d3b59beab35e3a99bd72ccd685ed278d4cddfcba999be
MD5 fdd3de56b5622968272a6d6e143c5874
BLAKE2b-256 ad26ca1fe7a5dedf0fa8415a8eb001155332ff0c81dea62747ff98ba49c03731

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.3.2-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 95cc8b6cff9826aa2b7e0ad8da0bbc287213d173f65ae400a1d9e6486fcf55f1
MD5 3350fb0f4c9a60d2b5a131ff98542266
BLAKE2b-256 8d816f0e38aca32974455e2b8ebe6135dba6cb9947ca41da2d3204d015bd35c8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.3.2-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 b9bf6ba4c6df92840fc69a0c360143d9d475ed97cdc405edfdcb7e7ffbeb87ad
MD5 785b787c81cedbe58129fbb30cd7f79f
BLAKE2b-256 b5d1b16f410b3c2783e93bea30b458cd3a98f0e7e0e475a0559b8c7b1dde8e5c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.3.2-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 e1ef83bed84e5bc18056b2bbb29af60f4c6d2f80f2d742f8382e65758f057322
MD5 d54a7b8e22c931dac492baea84a6030f
BLAKE2b-256 6bf8a359a688983e1f3f5f908aa0bb576192e9c17bceec736b55443e9cb5154d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.3.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7f885ad5a5041ffe0b05ff20fa7da4b02d75c91f90c60fb325dffe2931b5a7e1
MD5 42927aa41b5caad59b9d608132906696
BLAKE2b-256 b151c5014bea6a763df23110f9cc058586206ebf9c1a0fdf31897c7863a4ead5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.3.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 4f8be9da6557a3ecdec5ed85bd2c43275864822aa043a13399625d292d6a13cc
MD5 893020a0a34542a333b083bbfbef24ee
BLAKE2b-256 a5f20222eed45b97a0cc6cbc3dc1be2acc34ae864c6bc434849b542df78f5fad

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.3.2-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 268c041bb0bbe9566653e4aaf64cee29d727897d29bf2e29b613fae1cf389ca1
MD5 58319011ca585f774c111bd7bca2cd4a
BLAKE2b-256 2fd83ed9b1dcf6aab93da01a659929016ee5f65aed907eaf68a55baaefae4f46

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.3.2-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 b1507f4e7c29745155c5b67736f029340d1ebf31209b993c02d0373e79048362
MD5 0279df751cdb40c00141924bd38c39bb
BLAKE2b-256 714e1281d32f7ae6d1870abfd5f26a6c7ac43cac22901d6e66ed92c13c958a92

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.3.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9982a3baba88b36e5a3163af7d874b3ef05349c52138fcda777eed11b9922a2e
MD5 e2a8eae88b13f5fb271893087d2f8e77
BLAKE2b-256 d90730987ae35ea094f2c3f35805bf673bf940bffcb929458ec1c10848e3c9a6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.3.2-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 ee27b993e1872e6a2446d49bfde02bb1d1eb5258ebb79b2b6e9f6bea3caac129
MD5 19f67469ded77550d4c97c76527da4a5
BLAKE2b-256 bd55dfcb9893deb4b5f83f12aed5c9475f92061ff579e7f39d2008ab4aca9311

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.3.2-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 3905a533956d24c25faa4d684c89373ae8986582171c16fe69f3fb50533813a9
MD5 53d312142d08d1a58329b04062a30341
BLAKE2b-256 7a61f8d1588dc310b837c58b3ebbf5b67b3b7b62c7b5ebdae5066c22c3ced9d6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.3.2-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 823ae8b4b0031afc7421854b82844bbc2ec1af675457c12b14331d1b7994f7fa
MD5 d481769b41a7ab0bc7098d7ae8e07cde
BLAKE2b-256 da0746ad7d95b3c2b59b4495bb7d911a204df64b61a05b9c60f096324c0976ca

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.3.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ccaa2e796dfb24edb0c8c4807d2c844f61554d9a555b46470df4cf0e65527f6c
MD5 845b1701dcf60c93a8bffab719cf1b5c
BLAKE2b-256 a9f7e703113e495a4039356c00fc1491e93c6d22532f68ca4da962e050e88de2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.3.2-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b343b10aa409f16b82bd19877b31935746a026c49d7ce2da6680b542bb90d32a
MD5 b98c8c3366874aee493b13316018d7a8
BLAKE2b-256 ee46f58d8aa8a88eaa65f666bd0f6fe138a0cdcca2d2e436552f483d60479994

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.3.2-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 aa4a5aec92ed19ea1499f6d8fcf966d51c284d0c7bae817b1646183e56feec0b
MD5 1b8eb9a78d7486663531a749d8e33738
BLAKE2b-256 a1dcef7874073b2b5fa32db03a2125979a3086151f41c73abc00fa8fcbbe48aa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.3.2-cp39-cp39-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 9eeacb92a0dae8f4e5937e9bb7315b6c6522af95735a8aeec14d1a20749e79f2
MD5 ecee781217a916fa2b8cae994d4d1c48
BLAKE2b-256 66cf8495a61da5b10fbc703ada15f37ec792ad6c53bd48fa55ba8f5efffaee4b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.3.2-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 510b355b88d40fd2ff8c8318d447cad3d91d4fa69619ffcfacf4024ced14fafd
MD5 ee0ad3484c749bc1d9f0f36c6596a974
BLAKE2b-256 90bc1d21d2114b24d0de6a98aec0a3a629ee70e1c8265f3894b6888df728d9d6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.3.2-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 852ae73ac5e9a395bf2bec9f5c518cb44e14e98424ac62be33b9e7eb107e3a3f
MD5 013f062e936dd0bf30d8da7ef2494153
BLAKE2b-256 345ab7f9c00ab56e78b2c1c163ed1233787a9705a651f42a3fa64ce827613ea1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.3.2-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 1f0e323bd94495aceb2d2a8f8ee302fb04a70b896e03ea39e4dd588e71cdd28b
MD5 6de7653dd14ed61e3a37639807163299
BLAKE2b-256 697455a492f308c35ea324f77b05427c0f8b3ff71a596526f363026cc484436c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.3.2-cp38-cp38-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 67ff58a0045a2ab1049daed54cd686e012df097ec004d98ef213c839f09d4356
MD5 2d6884282c3fb45303b1a8f9c22106ec
BLAKE2b-256 4612981902d467b6cb7b487b9c112f50077cab3af30d45e8056a399c6d33473b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.3.2-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 abdfef35248c97ae1241690a1da7ccc14cbd0fa1c21fd55f31a90672f65cb8a9
MD5 f28489816fb3bccca9a383757b27af87
BLAKE2b-256 e61e6a94d7f6a516fead2865cd4d8a54f25bdcd04fc7cefe07543576150d58cc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.3.2-cp38-cp38-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 f7145d79a533f96903d188d2174e88869557a15ee6bb41430fa04953a6a21be0
MD5 a7b9899e5bb52e3cfeb8d7a5af6ca181
BLAKE2b-256 ac71dcc8cbf0bd5bad3602f6fdf405d76ca5561f61fa9ab6472241228e3bc2ac

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