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++ \
      libavcodec-dev \
      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.4.tar.gz (232.0 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.4-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.4-cp313-cp313-musllinux_1_2_aarch64.whl (27.3 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

pixelflux-1.4.4-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.4-cp313-cp313-manylinux_2_28_aarch64.whl (9.9 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

pixelflux-1.4.4-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.4-cp312-cp312-musllinux_1_2_aarch64.whl (27.3 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

pixelflux-1.4.4-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.4-cp312-cp312-manylinux_2_28_aarch64.whl (9.9 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

pixelflux-1.4.4-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.4-cp311-cp311-musllinux_1_2_aarch64.whl (27.3 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

pixelflux-1.4.4-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.4-cp311-cp311-manylinux_2_28_aarch64.whl (9.9 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

pixelflux-1.4.4-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.4-cp310-cp310-musllinux_1_2_aarch64.whl (27.3 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

pixelflux-1.4.4-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.4-cp310-cp310-manylinux_2_28_aarch64.whl (9.9 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

pixelflux-1.4.4-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.4-cp39-cp39-musllinux_1_2_aarch64.whl (27.3 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ ARM64

pixelflux-1.4.4-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.4-cp39-cp39-manylinux_2_28_aarch64.whl (9.9 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ ARM64

pixelflux-1.4.4-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.4-cp38-cp38-musllinux_1_2_aarch64.whl (27.3 MB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ ARM64

pixelflux-1.4.4-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.4-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.4.tar.gz.

File metadata

  • Download URL: pixelflux-1.4.4.tar.gz
  • Upload date:
  • Size: 232.0 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.4.tar.gz
Algorithm Hash digest
SHA256 2e85f896ea492385e2145ad02d3a82229d165b979a552e9372b12cef01503d79
MD5 2ce0054aa771fcb772947886f15524ee
BLAKE2b-256 821211c26c4e9cd4027730c7815e5032f7b60f485f1ea4be5d06471e302eaaa9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.4-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 530a5632801a0f36ecc5f1e964931a6f9ebf6ab3b7aa8886af0f4304ba2769e2
MD5 0a285051e12bdae159d4d6f97cbdf9ad
BLAKE2b-256 7d570fafedda10d77ef754477a04565b5e2fa7ffbdc6eae90241fd232bdeee79

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.4-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 f6b356be5a39fdda49792de9d4833568a9650b2c616ef6568a29f8265cd694e6
MD5 a70deb969acaf0ee3ada596b751ef619
BLAKE2b-256 9a7bd5a0e9a4bd963c41978754d079450f2201eb7a38caeb664aafa1e689e25d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.4-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3cb55988c6674671602b1df80dc25c7c1fd5d3e62322a50b1d129349017c458b
MD5 8df4ce7c174742a8162ae54624793845
BLAKE2b-256 34ca233e08a244eededcea0ad2557a1d927ba20bf7dad9ffc31f8777802ac800

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.4-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 c9144aa1be807f22280472f1cd8c72ab41c544af756b3455720454308c87ff24
MD5 6c5df87b30f367e3e5035a0b035ef3ce
BLAKE2b-256 db1bbd717ee95d12d946f803d5fc847f8aa23ebb84f83cda5c79bc9988c4883a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.4-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 15ef32e541592ebca294594fa08f6a76ddc66e98a7e7f8e807bd5a5fb9ea6ec4
MD5 2fba82a001976a5ebc6c77e79c0f272d
BLAKE2b-256 d869fba61bf45a1310031756d44b20b19d6281b2c52bfcb40b83f2376e5f7625

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.4-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 a16a1288e4d341a5e77a9206a3a261aeb71d9883b0214dc23d078f7ffce3bdc6
MD5 708942294d367949ce7228e78e45c5ba
BLAKE2b-256 ec5b22fc384bc3266549eaef18aef22fe30da75abc4b20a795706a22df4de1d9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.4-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9994941dc73f4404f1a1fda085721a4965cf6bf417141ffa333c62f5eaa0b016
MD5 521cc92533ea5689f85322e44f5a2133
BLAKE2b-256 34e71ff3c2da5aa8d2187f3f75a2fe8c16b2a5c01405d3ffc97e67cea905c4d8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.4-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 7ac8a46a104973ff0abcdc9924fc29e6ccbe6bdc9f3934d67f4947396e0dd24d
MD5 4059c567b97e218424cf6cf742c0a2b4
BLAKE2b-256 c3a7d7aaebdf4e60ad85d95183b0083915faea604b28b9fe7989203adb915d6b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.4-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f1d9c7aec09226f0c64c9fb48e356a4c74c562ad7f87cefc8e34691b24bf117c
MD5 09676ea4c6cb9287177eeff853fea8b2
BLAKE2b-256 f59f7409dce1623a785771961063cac689e909877e0f2a152a20488bb6dc7522

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.4-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 7226b90cf459e2cf564d61ff32178d7dce509bd256e68cbf457071673c0fb4e5
MD5 1412407e5f59db2cd50312cb8f610447
BLAKE2b-256 fd5e3b2259c569bb136c4e0d729ac191cfbb2255853d81b40f402e35a1d97fa6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.4-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 92bdad414c30cd6e349d9aece729a1586b81469522c43ee279cc9f1d14ce7265
MD5 631460765e8d73ff2afd4c82ba5ca546
BLAKE2b-256 57e0b34078c1547b9eac902dda0ff76410da6a60f4bb3af8bae27734e4298381

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.4-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 1bee3b3dd771649aa97d25a7d0b6d45ec4dfb4892c2f5c6755257a8c5cad2ddf
MD5 bdc16890385d5815cdfa1f71ae13d1c6
BLAKE2b-256 597fdab23fac3015b0e7bdf9f12cfd982fee64cc39015cb5cbefe4478e4c87c7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.4-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 2ff643735b8910d9781e8462a55ec0cfb3e59387950979399a19aee0db31f077
MD5 c23d53e644d930752cba6c5bdb651f1f
BLAKE2b-256 39a444fdc8e8a05a0a5f61479e4f2819b01b83c5b6d196bc56c8404195af39ce

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.4-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 5cec4ab88e8de011f1d027a6cb92d3e6d4554b43efa106b549c7531f1fdfc1af
MD5 82bd4b9a0b0c54e262d7fe6e3a0c5c6b
BLAKE2b-256 2497b8042b404a3db7e33e7cf56d5764881d35492d2f15da114089c53000e84a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.4-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0d8836c5b34a100789ffe44a965b720e0d3dd8989e2a24ab0d8eae41514d1c0f
MD5 86cffe3f1d727d142c8814327d99bdc7
BLAKE2b-256 5698321d631aa928325c9d97be9fcf5dd365bb6f8c2795ae6974ce417dd8ae2f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.4-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 bfa62c319e10e0569bc65ade7177e22c26a6e5832f9217036981c69bf608f636
MD5 b29b888cd636461dc60786c11b6d6571
BLAKE2b-256 989b96c6b8cb8ec052f68d012547f0bd8a2dad8362abd24b1c2c6f70542789c8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.4-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 8618d04d9546523c3158d2c38f62ec0b630e253a02586076d57571e35ea63b68
MD5 a0a0133ee78744d0913bfd570c70ea7e
BLAKE2b-256 621984269a9a1e46742fb7f7465d6f3a56722226c0a9752fbebc40bf2f54625b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.4-cp39-cp39-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 970d0a8282d1eefb3104848a390923e6ab0a09e4be445a3e08f36ad6dbea7e81
MD5 4603f6df17dea7d1a6a63c65577b46e8
BLAKE2b-256 141c78b9573ca9ee80ff4b1e3cfa97066623ed0b9a1f98a390935a59ad987c0c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.4-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4430eeeb51e2c84785a0d6a82d5132f626d4b3517db6fe2f2394acd60f7319b9
MD5 308d7bd1d17450a80c523ab927c5df9b
BLAKE2b-256 907e056b4df5b94afa056edab227abfb2177a18328a65c02285c60eca1606cdd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.4-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 0f3e8cdc9653281e243f5218230620635fea1ca0e8ff9c9da1b45521ee3dcf3b
MD5 3250cf127d4cefaa94a4811c4ac93bc7
BLAKE2b-256 1d709410cbe33515562f0a1ceabe7e4fdc2fde86ef02549c9defeff4c1583bb7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.4-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 09bb60baa064f704015e92c2c8e4147aba371803c461ae0474385832746ad186
MD5 dd39e775ff9e4885414e524e4e59c739
BLAKE2b-256 de8676848d63dd8fd4a021b878166561b864208f413380105853fba8f0faf058

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.4-cp38-cp38-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 2af071e9e133824aeba2a78ffcfdb12e5635f7ec00524294b29ea338340d0cae
MD5 fa558af752086756521b547bee7348ef
BLAKE2b-256 d73f1cbecdb466d1de0883fab14f989ab4ea71a77f39464967a97a24f6955e07

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.4-cp38-cp38-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6388837c070ab49bd204cab288a7facb829a9fb0fd56b5cd2affd4adf943c881
MD5 a824d135fd2cdeb364463c8cf09b3ac9
BLAKE2b-256 756e19c0e7445254cf9597e422d91e81d211fd68fcd7b31b7bb50e1d7bbe4033

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.4-cp38-cp38-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 a0e6dd704413dee310e7c4b0260f344c4ec03aa8284653d2e9760fc7d71e7f07
MD5 b5db2d947313b41c4ce622f0dcc8e741
BLAKE2b-256 231fabeec24860f1dc1d520b01e02b4c67799ab4b71c5e07e348c0787f779521

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