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.6.tar.gz (232.4 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.6-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.6-cp313-cp313-musllinux_1_2_aarch64.whl (27.3 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.9musllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.9manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.8musllinux: musl 1.2+ ARM64

pixelflux-1.4.6-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.6-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.6.tar.gz.

File metadata

  • Download URL: pixelflux-1.4.6.tar.gz
  • Upload date:
  • Size: 232.4 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.6.tar.gz
Algorithm Hash digest
SHA256 1f6ecc7c119609479b425f8e55f61a2045b32067a7ef021648806ac5852b0d19
MD5 b793a75173d509b20335439229825ad4
BLAKE2b-256 bf621a663f9a1d268d15d97e53675fb60bb123514cced03da58128d63410a140

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.6-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ec83182573f59af85b519694a422147dd71ac656a610cd900edcff5bc0ceca7b
MD5 891a45ff49b488a8f1a4479a2edcf2c9
BLAKE2b-256 7d1a53d42982e5aacc1e1a771e700c24b1df4db26124b4516455a8276e47b903

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.6-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 d4f0ba385c728b3d4fe70288a6458d2fa043db814e1af47ac9c2051be145027f
MD5 3657211724d20a26accb9d580d195fc6
BLAKE2b-256 a8e7a06effd534cab3741c239e18b57b5fd30649257bd75716dfea7c75ee36fb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.6-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f4cc995369d64468751d86ae30e69d55d4aac3c6bd751adecfea1eb1d522877a
MD5 564229a744ef0c98fb4e0ef324f57e84
BLAKE2b-256 01216b2b8ae4be8eba7f5f3437021f8c27e233fbf3c2dc8e250b8f012d915494

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.6-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 4c06d4719e190dc66d656e14519308eb47d19eea0c930680bd7c9d57729c942a
MD5 ab10154f995cd9daf356a9bfae2f7495
BLAKE2b-256 9c00c04ca9b54abdb39b385ab8a995e9068c1221cba97d795d9ad29d4d2f6da0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.6-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 6bdd11206cbb364c458c3b6017c7c87006a05189bde863ec4e791c342bfdbbca
MD5 952e60cdc0dd1503a80adf61646915b9
BLAKE2b-256 f56650f44871f7cdeee15434f59ada36cf04326a4418439f396a0c891c2dc4e6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.6-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 8c59b43e0108d29033d34f15f3edd4814734d070f1ac669b68221fdd3a336562
MD5 e132a94188a494980a81a2e60de83b3b
BLAKE2b-256 21ef424fe4b843ca21e3c18179d78467d3e023e4ab85e08c40df2fe0e6f7c7df

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.6-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1ebfd470bc9e9345c29bcab34ec8685ae6e9c83c2cbd580bcb92e2430b0ed124
MD5 0e5d5d5525505efc630106d6fc6c8267
BLAKE2b-256 25283dfb5b0c5304c62d58e1006487983532b4381cd75ee505da997bf4d07a21

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.6-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 66c597296b713f8a8f4c11dac172c01b171fd0a00c41874274ea5b1bc020d0b6
MD5 85a6442bf15e800a93a6feed3853de61
BLAKE2b-256 7b5afb3911e3536652e556a0cac5303e67c65e465346f24f9ef3de8ad014e738

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.6-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 021172846223d8c2a4c23dc6d3a731e292ac9b9b0139687e3ddc3dc5a0cddb37
MD5 9d0677f2cf38e0ee1589f09495ace776
BLAKE2b-256 cd43c0df1b8bef21ee8a29c0cbb3f2bd95d781048236562adb3a0e3746036ac5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.6-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 7e6c9db0205fd0da8c04228f968eb25e13885779aa3fba23700951daf4b2674a
MD5 88af08afdd56219312deacedf3558f83
BLAKE2b-256 eb9ff8b0fa3b4374f1a1d36ecfddcd746fa12dc671ee243e8d9ad1a05580bbb0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.6-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 dc2642a89da01256fd1904d5e13b678afbc4d2a73302647096ee7bcacaa19aa8
MD5 a393113affebd6c7e6c4db469c8d24e0
BLAKE2b-256 04c844e265de6a3c6dbbf66491207654aeb2e5685e650beb5c7557830da5a97a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.6-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 255b285597d6d1a6c03130484dc90e6ba3ededd727852d0dcd4c834db7090635
MD5 8c6a633cff775dddfb27dadd5ac112b1
BLAKE2b-256 98dbd857e6d8a8e8b6e82ed599173e4c8296f64895005c1003c890edf6b15b6c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.6-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 3b7fb0a37a49e5d0641de3a370c35bd72ae67473358dd1c5a5e06235c62f38d8
MD5 1a203899d847a550c1c0f4ea7c47fd0f
BLAKE2b-256 30a3c6cc14d738a18bd6265b05214da8878ff798d1eea00dab079e8f42ceb8d6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.6-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 f89f7f51b7e3ede38deaa8a5a93712fb4ce55b52e3c5c48ee4ab66a5481ee39e
MD5 505006189d0cdc6309777ea8d8c957cc
BLAKE2b-256 a782cf3fd07443e4a80a691ebb1571279fda451ceb609f30a739c14e8e1b7c3c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.6-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f953d0d49faecc8ebba0d1b6bc496229ad9446c56aba3aedb020189ddbba7b28
MD5 57c793b73fd64c98778069970c39bbc1
BLAKE2b-256 765cf8e1a69f066221aa1769c9c73049a9de813893b097199633df1d877f3bdb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.6-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b56422d833993087b5996e3764e1aa64d3420748be1ea07dd2881a936b83c9c5
MD5 da523bacbc047b34e4265ff41922fc4e
BLAKE2b-256 c6a03c18a6582dc84749d4224ff5667e5447ed4a68c480fed3ef1b9d1781a2ce

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.6-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 53914764ef9707cf0700d0d87b489579335f2d6598475086356b7e7910d2f1b2
MD5 ad05340502bbb8ec9ef57c526e6fd55f
BLAKE2b-256 5b17e060b91f01edf7017270c2ed181b88f578c918ff3571acbe5543888ffdb7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.6-cp39-cp39-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 11c84549b82a913df36b0f6c9fcfa12f831f3f6d3a73d5385cd4254be4e37cd5
MD5 83ad9776bc95fb1d3c5d15acfe5c4126
BLAKE2b-256 ef905fd0b1b37862a9f1e768663d294aa37875a24355e9ce5d8a3e3f8d8918e5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.6-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2b3a5936fee073816cb805829a54fd6effe61bda8db4f7a004dd64b1b5d31121
MD5 a9b05b206ed132bfd018618aa46b6734
BLAKE2b-256 5c03bf5bef8e1ee2b7d9f7cce158255ed7c6a52c2a905befd7d178488672df01

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.6-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 da00c6258c8b143048e9052f73aea50ade7a07815d8ed08dcd94d0091f3831bc
MD5 fabebb7db583284a98058159725fd144
BLAKE2b-256 b4184fdf3811957830090dd51b2ab4c0f81e2c05b213e2a32a351c76fc20e227

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.6-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 43a320948f13fcb74ede8928ef8247482db385022ca1367a29b8a0b8339ae625
MD5 04a6254b3100e1740138d7d120ef7249
BLAKE2b-256 ab763e20c9f4d71fa186f21168112bed7b740ea2627cdb00633e2a7c6cb13bc1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.6-cp38-cp38-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 668a2eff60a1566cd05a103ecc042c183a59ee0de4767d85758c6e61c8de9249
MD5 34b4fa1605db9cb06ae6e825552a9ceb
BLAKE2b-256 b633268c225948a1ffc5f42952aa2cf0ad54d131ee1965d459d8aed35408c1a5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.6-cp38-cp38-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 88f3c8260a06e80da105fa28d12796482f0cbdbf722dd5b22dc2a581aec9c8f4
MD5 a9573a531140240ab1ef79f7fc524d18
BLAKE2b-256 d25effa87f147ea53e0c2b47c5b96026878aa84d2e1b2bcbfbc4870108b03aba

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.4.6-cp38-cp38-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 f7e44fe7de9b8f1f600e27b1357534e279e0f18b8097de7f7ab10529811854e9
MD5 76732a640ef761ba411db7c44091ef18
BLAKE2b-256 15b1ade88b1bac9cd39b3d475325a344ac3b32625b07b927225da0d35bf87df9

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