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
ImageGrabrequires 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
qkey. - 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
Metadata
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)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| mediacapture-0.1.0.tar.gz | 5.2 kB | Without provenance | Details for mediacapture-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| mediacapture-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for mediacapture-0.1.0-py3-none-any.whl |
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
|
Security for MediaCapture 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.