Skip to main content

MediaCapture

MediaCapture is a simple, production-ready Python utility for screen and camera capture, screen/camera streaming, multi-camera compositing, and media normalization—using only a few lines of code.


Features

  • Capture screenshots to file
  • Record screen to video
  • Capture images from one or more cameras (with optional normalization)
  • Record video from multiple cameras to a single file (side-by-side)
  • Real-time screen streaming (with auto-resize)
  • Real-time multi-camera streaming (with auto-resize, optional normalization)
  • Simple directory management
  • No external dependencies beyond common imaging libraries

Installation

pip install MediaCapture

Usage

from MediaCapture import MediaCapture
import cv2
import numpy as np

mediaCapture = MediaCapture()

# Capture a screenshot
mediaCapture.captureScreen('screenshots/screen.jpg')

# Record the screen for 10 seconds
mediaCapture.recordScreen('videos/screen.mp4', duration=10)

# Capture from two cameras and save side-by-side
mediaCapture.captureMedia('images/cameras.jpg', 0, 1, normalize=True)

# Record from two cameras for 15 seconds
mediaCapture.recordMedia('videos/cameras.mp4', 0, 1, duration=15, normalize=True)

# Stream live screen preview (press 'q' to exit)
for frame in mediaCapture.streamScreen(fps=15):
    cv2.imshow("Screen", cv2.cvtColor(frame, cv2.COLOR_RGB2BGR))
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
cv2.destroyAllWindows()

# Stream from cameras (press 'q' to exit)
for frames, frameCount in mediaCapture.streamCameras(0, 1, normalize=True):
    if any(f is None for f in frames):
        break
    combined = np.hstack(frames)
    cv2.imshow("Combined Cameras", combined)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
cv2.destroyAllWindows()

Methods

Method Description
captureScreen(mediaFile) Capture screenshot to file
recordScreen(mediaFile, duration=10) Record the screen to video file
captureMedia(combinedFile, *cameras) Capture side-by-side from one or more cameras
recordMedia(combinedFile, *cameras, ...) Record video from one or more cameras
streamScreen(fps=10, maxWidth=1280, ...) Generator: live screen frames (resized)
streamCameras(*cameras, ...) Generator: live camera frames (resized)
normalizeImage(image) Normalize contrast/gamma of a frame

Notes

  • ImageGrab requires Windows/macOS or X11-based Linux.
  • For multi-camera capture, you must have multiple camera devices attached.
  • Streaming windows can be exited by pressing the q key.
  • Output directories are created automatically if they don’t exist.

License

This project is licensed under the Apache License, Version 2.0. Copyright 2025 Tristan McBride Sr.


Acknowledgements

Project by:

  • Tristan McBride Sr.
  • Sybil

Release files for MediaCapture 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for MediaCapture 0.1.0
File Size Uploaded
mediacapture-0.1.0.tar.gz 5.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for MediaCapture 0.1.0
File Interpreter ABI Platform
mediacapture-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 10.9 kB

Release files / mediacapture-0.1.0.tar.gz

Download URL mediacapture-0.1.0.tar.gz
Size 5.2 kB
Tags Source
SHA-256 checksum
How to use checksums
2dc832ff886b34931a70fc5fe2a3150d1108b948fad8443619338c0e65670912
BLAKE2b-256 checksum
How to use checksums
04d0792549dab94d0abaa8d40040bbd9ddbbfbd2a049e8fbbb964a71f8ebfb6b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.0.1 CPython/3.12.3

Release files / mediacapture-0.1.0-py3-none-any.whl

Download URL mediacapture-0.1.0-py3-none-any.whl
Size 5.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
415cbb6f90f981afea6c56c9b10720e4f766c01a53f9ff76b0bc5fc1d22af5e2
BLAKE2b-256 checksum
How to use checksums
207de02b6317025bced2b5652c2f3f385d222ce32c6501e43575d833df9fb450
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.0.1 CPython/3.12.3

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page