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
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 | |
|---|---|---|---|
| mediacapture-0.1.0.tar.gz | 5.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|