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.9.tar.gz (200.9 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.9-cp313-cp313-musllinux_1_2_x86_64.whl (3.7 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

pixelflux-1.2.9-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.8 MB view details)

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

pixelflux-1.2.9-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (1.5 MB view details)

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

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

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

pixelflux-1.2.9-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.8 MB view details)

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

pixelflux-1.2.9-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (1.5 MB view details)

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

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

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

pixelflux-1.2.9-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.8 MB view details)

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

pixelflux-1.2.9-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (1.5 MB view details)

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

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

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

pixelflux-1.2.9-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.8 MB view details)

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

pixelflux-1.2.9-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (1.5 MB view details)

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

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

Uploaded CPython 3.9musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.9musllinux: musl 1.2+ ARM64

pixelflux-1.2.9-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.8 MB view details)

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

pixelflux-1.2.9-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (1.5 MB view details)

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

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

Uploaded CPython 3.8musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.8musllinux: musl 1.2+ ARM64

pixelflux-1.2.9-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.8 MB view details)

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

pixelflux-1.2.9-cp38-cp38-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (1.5 MB view details)

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

File details

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

File metadata

  • Download URL: pixelflux-1.2.9.tar.gz
  • Upload date:
  • Size: 200.9 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.9.tar.gz
Algorithm Hash digest
SHA256 e96c51793a8acc04097e73ac786316806d72cab8b9125fbd10601e2198612cf4
MD5 ee5a2bfe06df631cf0ce05439ba7b7d1
BLAKE2b-256 8a71fc220d3652e70e3a9f61f2a8ea10c2d9535ab0e50306b501f9bb5784c34e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.9-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a60ae4d6485cf8b3248112db7c1fc590fd4added00f5f08d0930c6e2fef5da9b
MD5 921a213be99507c276b1a03459ddbfac
BLAKE2b-256 ce36ee05ade1990f8474d097b3b9769acb30d387194ed0897bbb996972f5959b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.9-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 e3bc22c18a43da1ef8668bf7971809e17ad0f0bfe8179e849d74a43b55a00b92
MD5 9423d6341154e8134e9ceb480a121324
BLAKE2b-256 771920268fa039b43bacc516869ca17ab06d755acee9abfe421f5c6d30ae5afc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.9-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 289877dbc15771c355a619bad31b3ec4d20f945176552573adc9d0a28f147a35
MD5 99fe895c941a095bd6c7667334e568c3
BLAKE2b-256 5e11173dd493cce2e153eea9e7a01c61a73b24e1e264feaed78363d71b437451

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.9-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 567504321a81122f3e496fd1d56972f1d7ee409d122686dd54766930d9800210
MD5 2605567656c072ec772aa2ec4739d33c
BLAKE2b-256 ab2b9029770dd9271e5e499f45ac76a5d622c3aca8224cb7dc2ab42615c7f642

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.9-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a2d9aa7830c98b7fea00daa0ab3bc8d6a166d1f33a03e323c5402116027c27d4
MD5 bd3ffcc913064a46a40e5625d5615af6
BLAKE2b-256 de020e5c7b344f187c1b27effd2b10ff8e86cd0fe85292cac2530aa547046f9c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.9-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 df29618692b164de96ae04768276e34fb659944a4100445f1733502ad9bd2587
MD5 aba7907b44ee07a14c2e2e6c9998b63c
BLAKE2b-256 c91df9dab06e67c33f61e9bb9bdece7151eb478d5c3b63bf68ce89bf3b894b33

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.9-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 35a8f0731e399546149df385df4a3805d4b885b9fb3c89bacd2c5eb3663741c6
MD5 5a95f9d81f3adc8466fa27d083666d36
BLAKE2b-256 bd20fedcf5e566e3cbab91a1c88e82ad5df8800fd790a81e6f31d0e9d84f8454

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.9-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 098912dac46f938a046f35d03be526ab425d5c6953b45153529bd05824ddeaef
MD5 6d908ef5e149362489a97d1b7cf4f2c9
BLAKE2b-256 c465f026d46ea286b174069ed379478ab2baeef70c6c9f79c27bc3ec5dce2779

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.9-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 e184c0607ba351ffd9cfe8c0eb9de571e52d13c043d31ad5d235fd12ad06e513
MD5 1500097297193cf9932d3c432d19b389
BLAKE2b-256 bd1f14969cd0382aee40a7b8fc66598f7b0b6eeb7dec76ad425afedab9bd24d5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.9-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 83f207cdfd3308d7b4102258a36de2caf939f6207216afc1ae55bb80444c8b22
MD5 c4fbfb8fc31e5e5d1cc1e0ed9f6c7fb3
BLAKE2b-256 edb71d72579843c1e0dbbce367d93eb71674a7db4648e64b8a7b6ff36273f291

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.9-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 aa3dacd2f280719fa42a8d9a3b16792003fe6b63504707026286bf7795671613
MD5 1264df0bbb2dc20fc677656ca6bb5245
BLAKE2b-256 ac42d604d133b34ef3441d8a1db475db7e3f2af74d1c23380137ce111b21b8d4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.9-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 c57c3888074adc075a1820d8e739bd49b1a5bbbdd1828e9f344ce96a4f774f60
MD5 6677955c1a795e4641d05e3215e4ad05
BLAKE2b-256 34add35276026cb68fe8950bd00d4f4ebed9e80e0771e0a511871009a8db9ab2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.9-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 0620ffae5914b2c59621b0916bc3dbbb04d7a5db1e77e7680f27ca192241400c
MD5 398171bfa485689cd1c66215daaa4dbf
BLAKE2b-256 f565299cf5a06858bd1114730d204b74c5734f9e53035805e720771687aca3d3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.9-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 a140f1a8af11ce9dacd5ff2dfc71c15359951d14a8ccbac6148c630b049e9938
MD5 dddcc0beffbd6a0844bee8a3ecda25ea
BLAKE2b-256 7bf80337099d68c09844a967a36e6bffabe5ec913bdca1ea7b543f3a924c23b4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.9-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 21e6a4909bfbb18bbd08bdbc745ef6222905b9b00569e7eb4bc1557c63792c03
MD5 7cae7845b35fcdc4992755fb214a40d4
BLAKE2b-256 8db888c2fbcbed453c80782b4a5b9461160fd042482e9e60412934a32cc03616

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.9-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 c2732634a31907366c85351e3418863d1c323c0f8398ebf9889833f9540890dd
MD5 f38adb27aca1888d0f7dd33f6b535bfb
BLAKE2b-256 258ee91368c2d833e2132f59bbf5c1bbad5aa7505db2486fb2e1843b7db54314

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.9-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 efcbc36c785163418376ee70f782dfe0a86aae71a70054c2328460ef8a21d6ef
MD5 dfd093cfeec25a7205a09390e952aa32
BLAKE2b-256 1a4febc6122507ed2561293cf467533ba1b31d12a0869d5123fac824354ae901

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.9-cp39-cp39-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 f208228d5095efda367e3a350630970aa89e1ad3fd010e5c1427f9ba4a2a7862
MD5 d01da88edbef03933d52931c8772b7a3
BLAKE2b-256 b835ec16869320f6e50ab125ae74de566a4c1d8713c420f2d64af9079f8b95f6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.9-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0b52078e0c93d56d47573f61fd01b0dd2afe30f0c025eb6c0fd182441960c005
MD5 007b7ab4588ce9cb6facb2707b00b726
BLAKE2b-256 b0375eeb72802ed6b73d655b540d4855fddc37ee1e323a9b8ef7bcda9067bf28

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.9-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 0226139cbe492e55e059b10d3199392e412f597f41650b90a8e452f7165f951f
MD5 a8219b0e12d568a78c8b541fec1441d7
BLAKE2b-256 559d0e5a208a9eae2954d4b3241118e900c74521f8512463284f2eb1d611fd03

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.9-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a4beb89beb10afb373944b22d4dcf7295ad417e25dc6deb4e4b18fa5f8d465f9
MD5 b1a1cdf0ed96a9adfbbb692787b38893
BLAKE2b-256 164187c26f6d5f7f48a91fbe1c5bf450358b1c2e94237f5c09cab4dc346307ad

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.9-cp38-cp38-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 341d4d52ccc0697f7cca07efccb5ba89ef4dee8aa753033e9ca3e8166703d114
MD5 6ac81877926f9c90f6caaf12b7c38fd5
BLAKE2b-256 a106a4ac1bf014ea9bec399524d4c20373a9a8007f8c0a0c8fdd5bdfdff879c9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.9-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8e3c7e6bb1fda09c9c3dace45f62a04640632d0e9a69a86477788ea5a2317e12
MD5 e84b9885dcdd6c1c0c36f06f5fce7e59
BLAKE2b-256 c6b0965d9498fbb539017523945bfa828bf63a5fb461e6da02da32fbd0548b0b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.9-cp38-cp38-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 527f7060aa4a8b089a085e53c797dab13e494f6d9e5e8f66c687e1849d4af3eb
MD5 872c006cad56793bf15da823627804d2
BLAKE2b-256 b55b9093552f4d5097706f04006a9a8d760145fd81a9995417beb113ec435a62

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