๐ธ 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
sc = ScreenCapture()
screen = sc.capture_screen()
cv2.imwrite("full_screen.png", cv2.cvtColor(screen, cv2.COLOR_RGB2BGR))
region = sc.capture_region((100, 100, 500, 500))
cv2.imwrite("region.png", cv2.cvtColor(region, cv2.COLOR_RGB2BGR))
try:
window = sc.capture_window("*Untitled - Notepad")
cv2.imwrite("window.png", window)
except NotImplementedError:
print("Window capture is not supported on this platform.")
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))
sc.record_video("output.mp4", duration=5, fps=60, capture_type="screen")
recorder = sc.create_recorder("screen")
recorder.start()
start_time = time.time()
frame_count = 0
while time.time() - start_time < 5:
frame = recorder.get_latest_frame()
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.