A versatile, high-performance Python package for cross-platform screen capturing and recording
Project description
📸 mistercar-screenshooter 💥
🚀 A versatile, high-performance Python package for cross-platform screen capturing and recording. It offers functionality for full screen, region, window, and monitor capture, as well as video recording capabilities. 🎞️
🛠️ Installation
pip install mistercar-screenshooter
📚 Usage
Here's a comprehensive example demonstrating all the main features of screenshooter:
from mistercar_screenshooter import ScreenCapture
import cv2
import time
# Create a ScreenCapture instance
sc = ScreenCapture()
# 1. Capture the entire screen
screen = sc.capture_screen()
cv2.imwrite("full_screen.png", cv2.cvtColor(screen, cv2.COLOR_RGB2BGR))
# 2. Capture a specific region
region = sc.capture_region((100, 100, 500, 500))
cv2.imwrite("region.png", cv2.cvtColor(region, cv2.COLOR_RGB2BGR))
# 3. Capture a specific window (Windows only)
try:
window = sc.capture_window("*Untitled - Notepad")
cv2.imwrite("window.png", window)
except NotImplementedError:
print("Window capture is not supported on this platform.")
# 4. List and capture from multiple monitors
monitors = sc.list_monitors()
for i, monitor in enumerate(monitors):
img = sc.capture_monitor(i)
cv2.imwrite(f"monitor_{i}.png", cv2.cvtColor(img, cv2.COLOR_RGB2BGR))
# 5. Record a video
sc.record_video("output.mp4", duration=5, fps=60, capture_type="screen")
# 6. Use the recorder for continuous capture
recorder = sc.create_recorder("screen")
recorder.start()
start_time = time.time()
frame_count = 0
while time.time() - start_time < 5: # Record for 5 seconds
frame = recorder.get_latest_frame()
# In a real application, you might process or save the frame here
frame_count += 1
recorder.stop()
print(f"Captured {frame_count} frames in 5 seconds (approx. {frame_count / 5:.2f} FPS)")
This example covers all main functionalities:
- 📷 Full screen capture
- 🔍 Region capture
- 🪟 Window capture (Windows only)
- 🖥️🖥️ Multiple monitor support
- 🎥 Video recording
- 🔄 Continuous capture with the recorder
You can find this example as a runnable script in the examples/demo.py
file in the repository.
Platform-specific notes
🪟 Windows
On Windows, screenshooter uses the BetterCam library for high-performance screen capture. This provides several benefits:
- ⚡ High-speed capture (240Hz+ capable)
- 🎮 Ability to capture from Direct3D exclusive full-screen applications
- 🖼️ Automatic adjustment for scaled/stretched resolutions
🐧 Linux and 🍎 macOS
On Linux and macOS, screenshooter uses the MSS (Multiple Screen Shot) library for screen capture. While it doesn't offer the same level of performance as BetterCam on Windows, it provides a consistent cross-platform experience.
🙏 Acknowledgements
ScreenShooter is built upon these fantastic projects:
- 🖼️ BetterCam: The world's fastest Python screenshot library for Windows.
- 🖥️ MSS (Multiple Screen Shot): An ultra fast cross-platform multiple screenshots module in pure Python using ctypes.
We're grateful to the maintainers and contributors of these projects for their excellent work!
🧪 Testing
To run the tests, install pytest and run:
pytest tests/
📜 License
This project is licensed under the MIT License - see the LICENSE file for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file mistercar_screenshooter-1.0.3.tar.gz
.
File metadata
- Download URL: mistercar_screenshooter-1.0.3.tar.gz
- Upload date:
- Size: 8.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.11.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | cd1ebfb82b5ab2a0fc9eacb4e63a11251f6710537afbd565e865e0d1a17dce6f |
|
MD5 | 2fd84f6b071a14430f3133abe8b11b97 |
|
BLAKE2b-256 | 2b8ac2337e76857473b625c5a13591cc81f8c11893cea89271e9c63eb51f9b50 |
File details
Details for the file mistercar_screenshooter-1.0.3-py3-none-any.whl
.
File metadata
- Download URL: mistercar_screenshooter-1.0.3-py3-none-any.whl
- Upload date:
- Size: 13.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.11.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | fc83a748a4c00e13e657f858b9774f8f4fbad12c30eb77ea9a987103b459e0a1 |
|
MD5 | 5fee4f65d2ebbcf9fdbe6f5d372eef43 |
|
BLAKE2b-256 | 051635d294dec97b582d727bb3d06dc1e0c1d783fa1c2d2089e9758061f6432d |