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.6.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.6-cp313-cp313-musllinux_1_2_x86_64.whl (4.1 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

pixelflux-1.2.6-cp313-cp313-musllinux_1_2_aarch64.whl (3.8 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

pixelflux-1.2.6-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.6-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (1.6 MB view details)

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

pixelflux-1.2.6-cp312-cp312-musllinux_1_2_x86_64.whl (4.1 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

pixelflux-1.2.6-cp312-cp312-musllinux_1_2_aarch64.whl (3.8 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

pixelflux-1.2.6-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.6-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (1.6 MB view details)

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

pixelflux-1.2.6-cp311-cp311-musllinux_1_2_x86_64.whl (4.1 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

pixelflux-1.2.6-cp311-cp311-musllinux_1_2_aarch64.whl (3.8 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

pixelflux-1.2.6-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.6-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (1.6 MB view details)

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

pixelflux-1.2.6-cp310-cp310-musllinux_1_2_x86_64.whl (4.1 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

pixelflux-1.2.6-cp310-cp310-musllinux_1_2_aarch64.whl (3.8 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

pixelflux-1.2.6-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.6-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (1.6 MB view details)

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

pixelflux-1.2.6-cp39-cp39-musllinux_1_2_x86_64.whl (4.1 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ x86-64

pixelflux-1.2.6-cp39-cp39-musllinux_1_2_aarch64.whl (3.8 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ ARM64

pixelflux-1.2.6-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.6-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (1.6 MB view details)

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

pixelflux-1.2.6-cp38-cp38-musllinux_1_2_x86_64.whl (4.1 MB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ x86-64

pixelflux-1.2.6-cp38-cp38-musllinux_1_2_aarch64.whl (3.8 MB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ ARM64

pixelflux-1.2.6-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.6-cp38-cp38-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (1.6 MB view details)

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

File details

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

File metadata

  • Download URL: pixelflux-1.2.6.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.6.tar.gz
Algorithm Hash digest
SHA256 7b31312eae2bb3d9c149a872d9924b6baed0c9639a377b3aa13b1686aa147a4f
MD5 45cc0621035ae99f8f9600018fe509be
BLAKE2b-256 854488108e0424a92229f68cb14fbc1ff612b4e567cd1553ca79852aba28042e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.6-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 9f253f3935005164a6f7e0077198a245d73dc25cc62f4be2596384d5167ef53f
MD5 52b00e051e3acb62fe0d8451402c3ab1
BLAKE2b-256 973d13cc8ea8732119ef12b0ab30d383ba93b4528781bab8f00769d5bb8fca0f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.6-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 eeebf85e257a3fb0395dc80879106aa6f753612d4876f2c0a0825964b0c13d2b
MD5 8cbc6097b8341ccc010a62b6e5ea9bb2
BLAKE2b-256 3039e0f41cd84f79c68db130df35b44f43c82aa4b48ef8c97308a291bb508d6f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.6-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6e10ddaefd3aa97717a31c630d9b7af8b30952619bfdc030c53ad6defd3b26d2
MD5 90824c4443da537dd9a502bf2cc5bbe8
BLAKE2b-256 08bd37dbcd077c2315ba830367ce5f7a3dc4719d47f5a3abe1e1a50342412de1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.6-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 8070132ab90c73c9c9354b95a8612eb11a4b38f5b9d0380bde8396e5ff8689e6
MD5 6491f307ddae46b84f0268f637ceec5e
BLAKE2b-256 d7867adf9b3ccb5346c19e865d95565d2ed05c9db523464251bcb4fa841a1a29

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.6-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 756eef05c08833ca74c637569d2272455bf465c0320d97f306e7ccb9a907f364
MD5 967ad0b6cd606582c627a4f7a7736198
BLAKE2b-256 d5e1dba5d515270cd4a59257a9cd7e9dd5b3cb8b6682684cf3e1a2b293c74ebe

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.6-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 f454802958b9cc06ce756f3eb7bd8d499070b620e640c4041ffe867ffbc5b444
MD5 7e9b19dc5efcd8e88c37775ebb84b21f
BLAKE2b-256 c5b84403c864ceb7a67ae419e38729185892086200b8f866ad99b844731cf87b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.6-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4fd53b6d57652b691eb4c08edd46f925ad31c05c4cc5d5d02a4f1649466c45cb
MD5 6af1e012669047af4ff230b1cc66e7c8
BLAKE2b-256 051f381889dce9bf544de75471c07fc7e42e4854aecc17b0e30d9e76de44c8e0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.6-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 008fed535f8d9791bb9d3e368f18a5985132901b194626337d5fa8c45507e50f
MD5 0b497004dbc8dac54a37b94cd68261fb
BLAKE2b-256 f20b7a690a617ea39814eb5f442b08326e5c394fc6457de8fd3a7dd222176b8b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.6-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 973b681dcb28a826c1c45e9073dd766edfb09ac88fdd83b1f52767d7a2d107dc
MD5 f3ceba07a24dce56fbd2c1c42f122743
BLAKE2b-256 b09c9d921663a4e0930b53d3f5502f8b37460e56f183edbddbc88a5192d21895

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.6-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 94accb05f1a441c8aff707b5bba06122c1b1000b694d3d45bf452028426a45fc
MD5 837b4b239d57013a71061b5aefef1f5f
BLAKE2b-256 3755382c07b6e1bc8ea33c4882871a40b0059e9f365dd1d669f46b5da5181957

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.6-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 885e5d363c818ae79a368e6cc9a94fd0438de2cbfad6bb7d31c5185d74ac0967
MD5 b300acb6f2066e29c7f8ec4ebe6f041f
BLAKE2b-256 dc94ca82c367884ec7b292bc26ecd900e27072fbcf2c06c70046961430053fb5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.6-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 2eaa982bbd2c31228805d4b3db9f4551f7d7967c9fa36310708b1687bf2f6637
MD5 ce162c8134233bb72074a6addd95ccdd
BLAKE2b-256 9ff20c98e5fa6b4aac15ece9ecc600a601c7d1ac0bc7dfc1d1c5babc1f9e2d59

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.6-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 6d9c5699103f3ebca3645f600060c29455abb581a2df12d3bd686b91b719114c
MD5 a6589adaed7b255a3532e194908fb60c
BLAKE2b-256 bea63cbdf3af57ade97d3b1a4885d840f113a063d9e47fa4092577188bc32870

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.6-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 82182efa671a01996a38af0be541035e7175b834a36cd71ad0117356c6c9af06
MD5 e884e09be19494ead7ebeec3100d9325
BLAKE2b-256 f4deb06e083531ac51cc018655c4586487fafa8fa80e2c0df4a17b0bdd8fa20e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.6-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0bdd9c51fd39f81e12f3a30df7d29173a4d65beff41199e935416ed562392c72
MD5 4e25002be9204c82cfe580a3a2ae89a5
BLAKE2b-256 8fcb37001596751a461b95f676401a3fac34c837067b0caf72a7c3548fb380a9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.6-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 7e9b627c67cf7611b4fe201ba84f2c68b20d960b390d25d673e67306245df009
MD5 aa759dfbb0d4c44a434be15c26263818
BLAKE2b-256 918ac8354ec29484ec3cd7672ddad0fc76f865ca76bdf34d6273f139afec5a7f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.6-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c010a3214c0d7fa1d6270ea8afb0399840865f75cd8234e4eb4755d90effa142
MD5 8108e474bc53439e94b139dfaa9b9b26
BLAKE2b-256 8b9bf179bc5ea873df5f476d0d92578dd13d5ec3b36f6cbf3a1822aeecd42123

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.6-cp39-cp39-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 5a2c2934c41bed275763a42ee1dae12cd8dbf712520b1591997f845ef55aa7b4
MD5 6d1333c9dd1364260787a76cf17bba02
BLAKE2b-256 661fc50adb101f4563a604dfd9711208e1a82ba5266c0c08278d2400a7cf85b6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.6-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7165d4678371474fd5aba9167d8fcc4deb9564ee57a0c32f21a0f17f1e8143ed
MD5 fa143efa10309e4994e2b43e1de1024f
BLAKE2b-256 19a1b2be73e274ae226a2dfb3838e795ed8f861d2a752e0b3e00284fb9f39572

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.6-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 60687cfbaf01d120fe6746eaa8250650b5dc80349f701acf0f3e8047d22414ef
MD5 ebd2c4d96eba2429c27234779c6f4cfd
BLAKE2b-256 f01b9f52a262282ed2b8961d32dc1ceb2c4a9e7986c5cbd0453202d390ee0246

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.6-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c6c5b951625722f5d34b305605576fa9b1ab1020fe09bc4d2fc4734879e016f5
MD5 a5056de95f5e6417635f1411e1212e90
BLAKE2b-256 913b740e880aeeef78e7f0eaa98219cfb0d30b66af375325e5ebf03c1f1a4df9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.6-cp38-cp38-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 25bec47aa5077b2307ba4522fd290585f0bcf1a94f1036ebabfb03800f9fec51
MD5 5cd6a69f4a16a8c3da97452d6944c6be
BLAKE2b-256 7440179b16f8a68260e52ff34faf0388e1bbba8215e753dd1d8ff9cb559fc091

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.6-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9abcf562175dc3cd8769d13fc454d501baa99acb5847cca485b09a5157c6cb78
MD5 88aac14d4262170be33c6f24d39e7bd7
BLAKE2b-256 e75ce97d72c3e280879d4f47a59b12391c2980d02bec12d0937918a3d3e5f663

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.6-cp38-cp38-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 cd54d5fe201b69e67a5b8ae698a2decf963e03acf78fc3328bd7feab1eac8961
MD5 63d2f1878b2cb012ac7afa0196cb9921
BLAKE2b-256 cdb9ef87472c9d15a8e7901706bb9bcb8c18f8f4d7b86bd38c228fd1187d5640

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