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

# --- Debugging ---
settings.debug_logging = False # Enable/disable the continuous FPS and settings log to the console.

# --- JPEG Settings ---
settings.jpeg_quality = 75              # Quality for changed stripes (0-100)
settings.paint_over_jpeg_quality = 90   # Quality for static "paint-over" stripes (0-100)

# --- H.264 Settings ---
settings.h264_crf = 25                   # CRF value (0-51, lower is better quality/higher bitrate)
settings.h264_paintover_crf = 18         # CRF for H.264 paintover on static content. Must be lower than h264_crf to activate.
settings.h264_paintover_burst_frames = 5 # Number of high-quality frames to send in a burst when a paintover is triggered.
settings.h264_fullcolor = False          # Use I444 (full color) instead of I420 for software encoding
settings.h264_fullframe = True           # Encode full frames (required for HW accel) instead of just changed stripes
settings.h264_streaming_mode = False     # Bypass all VNC logic and work like a normal video encoder, higher constant CPU usage for fullscreen gaming/videos

# --- Hardware Acceleration ---
# Set to >= 0 to enable VA-API on a specific /dev/dri/renderD* node.
# Set to -1 to disable VA-API and let the system try NVENC if available.
settings.vaapi_render_node_index = -1

# --- Change Detection & Optimization ---
settings.use_paint_over_quality = True  # Enable paint-over/IDR requests for static regions
settings.paint_over_trigger_frames = 15 # Frames of no motion to trigger paint-over
settings.damage_block_threshold = 10    # Consecutive changes to trigger "damaged" state
settings.damage_block_duration = 30     # Frames a stripe stays "damaged"

# --- Watermarking ---
# Must be a bytes object. The path to your PNG image.
settings.watermark_path = b"/path/to/your/watermark.png" 
# 0:None, 1:TopLeft, 2:TopRight, 3:BottomLeft, 4:BottomRight, 5:Middle, 6:Animated
settings.watermark_location_enum = 4 

Stripe Callback and Data Structure

Your callback function receives a ctypes.POINTER(StripeEncodeResult). You must access its fields via the .contents attribute.

The StripeEncodeResult struct has the following fields:

# This is an illustrative Python representation of the C++ struct.
class StripeEncodeResult(ctypes.Structure):
    _fields_ = [
        ("type", ctypes.c_int),             # 1 for JPEG, 2 for H.264
        ("stripe_y_start", ctypes.c_int),
        ("stripe_height", ctypes.c_int),
        ("size", ctypes.c_int),             # The size of the data in bytes
        ("data", ctypes.POINTER(ctypes.c_ubyte)), # Pointer to the encoded data
        ("frame_id", ctypes.c_int),         # Frame counter for this stripe
    ]

Memory Management: The data pointed to by result.contents.data is valid only within the scope of your callback function. The C++ library automatically frees this memory after your callback returns. To use the data, you must copy it, for example by using ctypes.string_at(result.contents.data, result.contents.size).

Features

  • Efficient Pixel Capture: Leverages a native C++ module using XShm for optimized X11 screen capture performance.
  • Flexible Encoding Backends:
    • Software: libx264 (H.264) and libjpeg-turbo (JPEG).
    • Hardware: NVIDIA NVENC and VA-API (Intel, AMD).
  • Stripe-Based Processing: For software encoding, can divide the screen into horizontal stripes and process them in parallel across CPU cores.
  • Change Detection: Encodes only stripes that have changed (based on an XXH3 hash comparison) since the last frame, significantly reducing processing load and bandwidth for software encoding modes.
  • Dynamic Watermarking: Overlay a PNG image on the captured video. The watermark can be pinned to a corner, centered, or animated to bounce around the screen.
  • Dynamic Quality Optimizations:
    • Paint-Over for Static Regions: After a region remains static for paint_over_trigger_frames, it is resent at high quality (JPEG) or as a new IDR frame (H.264) to correct any compression artifacts.
    • Damage Throttling: For highly active regions, the system can temporarily reduce the frequency of change detection to save CPU cycles.
  • Direct Callback Mechanism: Provides encoded stripe data directly to your Python code for real-time processing or streaming.

Example: Real-time H.264 Streaming with WebSockets

A comprehensive example, screen_to_browser.py, is located in the example directory of this repository. This script demonstrates robust, real-time screen capture, H.264 encoding, and streaming via WebSockets. It sets up:

  • An asyncio-based WebSocket server to stream encoded H.264 frames.
  • An HTTP server to serve a client-side HTML page for viewing the stream.
  • The pixelflux module to perform the screen capture and encoding.
  • Dynamic capture region selection via the URL hash.

To run this example:

Note: This example assumes you are on a Linux host with a running X11 session.

  1. First, ensure you have the websockets library installed:

    pip install websockets
    
  2. Navigate to the example directory within the repository:

    cd example
    
  3. Execute the Python script:

    python3 screen_to_browser.py
    
  4. Open your web browser to view the live stream. You can control the capture area:

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

License

This project is licensed under the Mozilla Public License Version 2.0. A copy of the MPL 2.0 can be found at https://mozilla.org/MPL/2.0/.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pixelflux-1.4.3.tar.gz (231.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.4.3-cp313-cp313-musllinux_1_2_x86_64.whl (29.4 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

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

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

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

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

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

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

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

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.9musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.9musllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.9manylinux: glibc 2.28+ x86-64

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

Uploaded CPython 3.9manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.8musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.8musllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.8manylinux: glibc 2.28+ x86-64

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

Uploaded CPython 3.8manylinux: glibc 2.28+ ARM64

File details

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

File metadata

  • Download URL: pixelflux-1.4.3.tar.gz
  • Upload date:
  • Size: 231.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.4.3.tar.gz
Algorithm Hash digest
SHA256 6d4e9f2485e7a15b2df6bc30e02755ad9273cfe7b5e3748dbbacb6d053728537
MD5 b56e95f77e44c6305b9b1bc6ed14d1a2
BLAKE2b-256 0234b09b3f86e44329510762078e82c6a8b4d56dd927431c73145fc3d179f428

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.3-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 1f70cff6f7b780628f574e49ac921cf979bea356b705948284510af26b188147
MD5 e9cf79eec41ca3197c678ae3ef2bd5fb
BLAKE2b-256 54562f538bc2477176e145150558a9304defae8b85fa661df7dcea7423302e3d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.3-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 b382fd58ce9ad76f130ef6fae9f9e430feffcdad4d17ee7db563e405535b274b
MD5 08e02cea782018e5e263c4dfebbe6600
BLAKE2b-256 fd6fc0bd75d1fec9dfe16f4ef5d944e5f931bc82e39fb0c2b60614836057475c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.3-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 71d3401f8b817071ecb69e228c8099d61d82cd2bc53d86dac3afa195f1491e31
MD5 134410cc88e1b106d94ca9c68a4375d4
BLAKE2b-256 d73548200b933600b217702da0524005de70c20fa8543d769891076230c3052b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.3-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 1900945b1508980a155316704f8e2fa46169f4a2a0a1c7710f66dc4f7cbdae7f
MD5 3be781d26b71924382a473ebac518950
BLAKE2b-256 e3dfe905c787ee4568912fa1e29a6c5a2ba8a699b87ed24d76e768e2de9d1595

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.3-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a31e274b99a62cb82879eafe0e41f9b7d6c0d46a1e13aad453e007b29beb84e3
MD5 820899216003cecae2bb2b5cbda1af4e
BLAKE2b-256 577b74e7e1f83e374b9909cf7ce21f94f462ea0d33183283873d7eb98eaae329

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.3-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 35d484d86a884e1def0f5bfe8b6b91cb17de729298de91b426f672edec3588b5
MD5 2e174867e6bdb1b3100c007bbfb76552
BLAKE2b-256 46fd43c8e3660c2241779271469ebf2762f8b5797b2884caf82d00ef8c7a20cc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.3-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d9739c645b26c5a6f346c0b1816097300f05b0b62848e1206d45a89da5e29f99
MD5 629af1a5f07efc1ebd83893b343d5695
BLAKE2b-256 12e9070c2b86af000b8f275b42573236a8ab614e8229a3d79783bf10fff17fb3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.3-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 cec1f778e7ea8caa7dc813d627f8989043b5f19d3e906b75433975084effbf57
MD5 3636f920ec0b2446896e178954577434
BLAKE2b-256 e86408d34902b780945342cb02a3fa25276158dbb79610df70f1028518c86245

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.3-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 04514ce701fd18459910467c069ed82ea3fc6989c3ef752876fc4bf4f0e92053
MD5 5fee2eb249249b2094c093ac59bf2649
BLAKE2b-256 e7a5cf775bc9c5db36383d047c4febedc09bd289c8de541af57a2e16669b0262

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.3-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 9f9384251f26577182c76546b613910df402ef675b77a6d6495407fb970eddca
MD5 624166e27b7a11e12ac82d35cf7f8269
BLAKE2b-256 900a8c33d4c7e5614bf2ebe7803b03cf4f1f22ece2ee5fcf46aa487d95e88e63

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.3-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 fe2b5f6dba9cd4ff0dffb19c7e8c623b4d5fe61422add2a5b5e5d90c41306689
MD5 8341f67a0b46275a66c47f0015468d1d
BLAKE2b-256 8c23d2d9b98cde5c0f2439a06e4b0b9b3b9254b84afaca0ea1d5969a0d7dc2af

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.3-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 5d083f35785fd5300d67e8d73f1e6c52c45983f8655650cdbf3a26fd38723d0f
MD5 6da016ff0f5ef82bb8a820bdb723692c
BLAKE2b-256 5940d0c592e00d27bdb9e34f8d61958414db9d7ce2b61b864276ea72b1c97a9a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.3-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 636192633bd485561063635060cf566114ef319ea87e16f95a8ca90d149827be
MD5 e1b6f55e8225255b380f3881ac179383
BLAKE2b-256 634773ce2831a4162ef45cbe8d3a3259b87e05c641e441e2a09a1059e48576d3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.3-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 991c1bde86b4b59d009894c76b164f961649c11fc5ca2793c6f6e5f309a92087
MD5 fe6ec8ee70a0a65b6aff5b1cd8ab0bc9
BLAKE2b-256 7b36181129e00e50b2d2a98aa1b91264df16d1a9001a36da093bea64f3b19a4b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.3-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f8e05359887d9bb8c233e4e45ae5fc6faeec49bd3cb373f211e6b064c313a71d
MD5 847af1c5f8aa8e396bd900f84427fbcd
BLAKE2b-256 0216e89728bca92190b14e033d02e355b49ca2aea8a34c3e5422651cc9a3b08e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.3-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 6a62f200be2d44ce2e589ae1a0f4c52417c7e84bc2fb4f3fe3b7fb5c8ff374f1
MD5 646ab146b3f835152cfce8b31063255e
BLAKE2b-256 0df4e074449060b162c7bcbeaa586c0a62d9082f364def6f31143daf6d57329c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.3-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 8979f63e04d0ced275b7d51c3cf8503c255ec2f83ccf84abf9ae5b8ba361a5f2
MD5 b2978890c892a1f46d0f0aaa1776a451
BLAKE2b-256 57be92627c774b4d75e6c005b08e8b43206c9caf4f1de653a83ef06e0e3800f6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.3-cp39-cp39-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 4da37482cbd96d1f57204440bdfd5495b2f7f5f995dc96dd383d73f490ab762d
MD5 21a86017cf79f427ec680d126657bfcc
BLAKE2b-256 d3ac6d18b6f5b8505b4ded8bbb1ecfb3dab4904e768d6d93dc8ea59c2076fa6a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.3-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 00927070bdc511b4222f4e7a6212e744ab07196f88bcc2b39dcec7e1c862492f
MD5 f7de2f70fa7e944f0ffdbedca0b3904c
BLAKE2b-256 c77063d5cabd850ca03502184d9287aeecc37e145500ae2f573d0c24367293f9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.3-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 c62c5ae973cb9087bc8393d04fec02303b1a3f90c9e7b8f1f26f879737c078ae
MD5 dcf03aa251a014ce3add2cec9bee5273
BLAKE2b-256 dc545bf702168fbdf5d4150f8bb3c08d0b61a40f5f329ff5400cb431c7910646

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.3-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 aafc538d22b84d7b562ee11218f5ac3da3463808e9bd737531646ff6fc7cb351
MD5 35c3e45fab0499e87f7a9566dc81afc0
BLAKE2b-256 55e81463b0455a2a3db3d3f63c188e78ddb7fed95fb89dd3cd37165192007b2b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.3-cp38-cp38-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 9c59392bdfa91cda55a5ab8036ef4c145d46b6b21ef401d0148802541272a9b3
MD5 a7b0a3ce2202778e320f8f58884c02cc
BLAKE2b-256 2fb32f7bfcce3ab3f0d8524a850fbdd97fa4fc391d645d93cd19ddd782b8f9a0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.3-cp38-cp38-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f2e4eb45d0fbc596524920b467463f409d83cfb6f0ba9237298452805e41f8a1
MD5 5db27b39e5e6fc0a15fffbc42ee4a5ed
BLAKE2b-256 5edfa95065a9d0265dfb7f7df31b51d6736e6739df1123f94a56b04d1172e50b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.3-cp38-cp38-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 2d0b27b67a8c30348c1dccddca9d87241de7d37093600731d14b7c9384b98fff
MD5 d128596f0c835334c5ec80522ff36504
BLAKE2b-256 8886aa25a28611be3b2f2fe0dac977aac319d4ddaa6d647c09722cf5f44a3fd5

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