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

# --- 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 = 23                  # CRF value (0-51, lower is better quality/higher bitrate)
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

# --- 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.2.4.tar.gz (200.6 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.2.4-cp313-cp313-musllinux_1_2_x86_64.whl (4.3 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

pixelflux-1.2.4-cp313-cp313-musllinux_1_2_aarch64.whl (4.0 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

pixelflux-1.2.4-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.2.4-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (1.9 MB view details)

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

pixelflux-1.2.4-cp312-cp312-musllinux_1_2_x86_64.whl (4.3 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

pixelflux-1.2.4-cp312-cp312-musllinux_1_2_aarch64.whl (4.0 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

pixelflux-1.2.4-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.2.4-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (1.9 MB view details)

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

pixelflux-1.2.4-cp311-cp311-musllinux_1_2_x86_64.whl (4.3 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

pixelflux-1.2.4-cp311-cp311-musllinux_1_2_aarch64.whl (4.0 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

pixelflux-1.2.4-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.2.4-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (1.9 MB view details)

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

pixelflux-1.2.4-cp310-cp310-musllinux_1_2_x86_64.whl (4.3 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

pixelflux-1.2.4-cp310-cp310-musllinux_1_2_aarch64.whl (4.0 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

pixelflux-1.2.4-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.2.4-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (1.9 MB view details)

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

pixelflux-1.2.4-cp39-cp39-musllinux_1_2_x86_64.whl (4.3 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ x86-64

pixelflux-1.2.4-cp39-cp39-musllinux_1_2_aarch64.whl (4.0 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ ARM64

pixelflux-1.2.4-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.2.4-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (1.9 MB view details)

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

pixelflux-1.2.4-cp38-cp38-musllinux_1_2_x86_64.whl (4.3 MB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ x86-64

pixelflux-1.2.4-cp38-cp38-musllinux_1_2_aarch64.whl (4.0 MB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ ARM64

pixelflux-1.2.4-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.2.4-cp38-cp38-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (1.9 MB view details)

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

File details

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

File metadata

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

File hashes

Hashes for pixelflux-1.2.4.tar.gz
Algorithm Hash digest
SHA256 34b402cb1be15c86dd031b9e8f5b2faf6d3364dee09dd7ecc030573d93673aea
MD5 1c99654a6a328a21411e6794c67453a4
BLAKE2b-256 8bcffba2206bb36ec37893c089f175239b309d2819f381b8b87afe9292e43fdb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.4-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 85ce8a5b89103ef63102e99a445964c30bdd0cb7e41f80cf96263727cf78a670
MD5 1d2f6210c4e7dfbac00ca289fc78cb60
BLAKE2b-256 37319ecfc3cdd11fbdfe50b7f733b15f1d2de5d32814118c8c12dbfc0a21f089

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.4-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 b7ce0a846abb5274aedbbe89e9d21ee78be6995f8a77c8bfa3894770ff5d97d5
MD5 a8092edccee41dd281a0195cd481e147
BLAKE2b-256 90ec5bc265137abb7cf09a70a580fd208e566c68a06d2c0ca31b1d680b059ee4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.4-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 618e46b38b21d9770824b8bf273708eb1a01243456519431f1e5385d31e1e02a
MD5 091ed496605976436325ab410b65129a
BLAKE2b-256 d9553a84901f800b65ac044fe3ebda91b236351deff14ce84027784b697e3b9a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.4-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e71b5fe18e6e1fd22ac80f91ca08c7d0a4a48394d9f461f0fb107f139f0ca053
MD5 e5c24ad1bc1038763ef9f68aa7b1bfd8
BLAKE2b-256 de1476172807d4c9afd0b0b102ab21f913abbe92d0552d26a740b2a6f122b6f8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.4-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 810411612a5467d43175e9c65e7d90013e2b81947275d285ef7842dc083cad11
MD5 f8f18a5197331ecac51688b23f9288d1
BLAKE2b-256 4085d54972ae15b8baad2c8b7edc63b513415c63c8274c0a8652a0ebf41acab6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.4-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 53792776c00981ccc08feab75c72dae87a51c4cef10e4529811b66896ad0646f
MD5 41df57c8194446bf46ca44d36b1bffb8
BLAKE2b-256 3a249a8743bba427ace1f5015afcde56108b93ef5e3c9a1749e4c0b5e14b4be0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.4-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6524491e89de36b4aad57238ad4af0f6b770d4e028e39421ddf2fb6fbec6266d
MD5 13577d20d038794bb4e1f0c86b37832a
BLAKE2b-256 8f19b5af788f348cab62a2b38380893158b43834ea2cb63497df196310974ac9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.4-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 580249369870f4208edf7e536eba4b71573ed47d0af509378de8bb0628c66364
MD5 94842ecfeae8e5118b516b1a14ddaa58
BLAKE2b-256 63e27e8cea2e74f4365da09e57dfaeddcd8fd0f06302738cc9799b2bca33d513

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.4-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 86e8b9a931e99abf42dd865c87767d0369b758eba48fa1e704f0b04ce697cbdd
MD5 d3126196a92980257de99cce3f808a7e
BLAKE2b-256 cb251e942ae9409ba557644e4e727121063327b25339f3524eeac6098a19dfe5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.4-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 d30fdd962c6572a1a68fe22abfb6127380c8d7330c000a96656e182d55d8ade1
MD5 de69d9125d3ee38d5ae91cc5f191a41e
BLAKE2b-256 37bb6a42b2f147e7c9a26585f3a41a03d98be7d6a6ca05b52b98ff7d0747e56f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.4-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 89bef47712c2d110ede7b37db73bec1e302bf2a9536a7506a8acfc8641bf7845
MD5 7a32d8bc81209e8543af11bc083b82fd
BLAKE2b-256 46604d790543d557f83423956b9a6a724ba11ddd9c6533e5d02742142822190f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.4-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 dae37b34b489f10c17c4dd8b0c4282b580ed80c3a2b1fc4f330aeae2f51ecd87
MD5 2da5f0f1fd0079f1d8141f18ed34a450
BLAKE2b-256 3194d38fc7d321113f0fa4597e001416d71f3ac8a2afeb7b14da48c78bba4b49

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.4-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 95c170f9350399feba4c304fe9529e03ce5551362e398649b3a2930d0f53ae66
MD5 08091c80a46dab563939295a34258b0e
BLAKE2b-256 347a7148eb5e79dbb5af9a9be9735e748827b0ce8d29a7b37bdf3f2e7c651e76

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.4-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 896f4f71f363d0b417ccc8a3154a8a2135d9cdb65f3fda94370ec4433bf8531f
MD5 e44edd76162d4b953c98b4b511c5d5ea
BLAKE2b-256 a2534b3fade439c37480af29669dbdd31252c860e5d707be0740e6b56eccab80

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.4-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 af336476d716130f180de2aef8084bcbefd163481b9bec30035322257b55b6a2
MD5 95f704907066e539939297e1bb95fb02
BLAKE2b-256 8c1abdb697203dc473460c51dcca67f07e90cbc6d98368e13072ad08aed0dc37

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.4-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 85422118f7cf962f1299427cdb066328eb7b83cc754b4aba75d1561d75091b63
MD5 96d017a8d6a95a3d460d40e28c52ddb2
BLAKE2b-256 e5cd69ac81cf2627a9fd164524bf02ac8f7fe3cf31bda1f20cc87fa7be76acdf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.4-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 7e22309f894b655c997d8e5a3b30ae5e84080e63fe2d5fd35114acf0e7584bd7
MD5 f12493f252c8b3a67c9e1197dc388dad
BLAKE2b-256 efff6c36460885d673476022667c633758d70c01529932b49408acbc719c7013

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.4-cp39-cp39-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 be4736c15a7c1d8192b3162281719aa00b6c8dc4610ce3d2536bdbfff1d5929b
MD5 214bf0efb56885387131e71426544709
BLAKE2b-256 2722343174753d461753847b2d98b9fc2f63484d6a585b60038ba52e6a9f3179

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.4-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 123bbbb45b693796a672e71a3002b4730df1d3a602afddd161fcd696f1bcbd7b
MD5 db7157dc722ae73a22b30658abb3d782
BLAKE2b-256 911547cc1ec570750e44894a23d2ba2ac2e042af47a9328f6a229cf02c910af1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.4-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 8f01ff60c104f38fab0929d38181f834b4b136baf55df1ef3bbbcaf63326d4bc
MD5 ff19fa3a6e0fb795ab49286b80fe58cd
BLAKE2b-256 f19d9adf6c5efdb8a8f74674b7661c61703f1572c54fba82f2c43658aa38aa13

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.4-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a5c324ea7bf732ae85ba32d612fff87b5adb5309d06a078b7bd065dc913441b9
MD5 1e91b62360fcd3b841c2c9eb494557e4
BLAKE2b-256 c919a1f3171d3d717c86d4632a700d83e3e05c57a1007351f1f782edbf2a465a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.4-cp38-cp38-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 4ee58305e920d63117185cc3580d9fdf7d7f1066493952b0f39ae737a092db29
MD5 f68d780e31a6410074f215b2a3f56bb1
BLAKE2b-256 ccd7d070069510063348648921065bfccc8b1ec032156f17b5735eb84ab60bda

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.4-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 702d753169b9410c0b65d2a1ee5a1ad6d05f61d238e7c6ba0d0a9ce84ccc170a
MD5 d42a3a41596932e916a003ecc3ea0fa8
BLAKE2b-256 0db1c4f0115f744c3bac56124a02997edb1924ad2ff5404de9dc9483dd435936

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.4-cp38-cp38-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 0c3dd40f04c4e1011d06f239489caafa3391a80e5f4ba1dda0dd8e304cb22542
MD5 a8b363aad9b20ccd4e1b8a11a418a717
BLAKE2b-256 b50eb0f1bf4591dfe4474254fbb5c8993291bf7b4a48149853e166c217b89ac8

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