Skip to main content

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", cv2.cvtColor(window, cv2.COLOR_RGB2BGR))
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:

  1. 📷 Full screen capture
  2. 🔍 Region capture
  3. 🪟 Window capture (Windows only)
  4. 🖥️🖥️ Multiple monitor support
  5. 🎥 Video recording
  6. 🔄 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mistercar_screenshooter-1.1.0.tar.gz (9.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mistercar_screenshooter-1.1.0-py3-none-any.whl (15.1 kB view details)

Uploaded Python 3

File details

Details for the file mistercar_screenshooter-1.1.0.tar.gz.

File metadata

  • Download URL: mistercar_screenshooter-1.1.0.tar.gz
  • Upload date:
  • Size: 9.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.11

File hashes

Hashes for mistercar_screenshooter-1.1.0.tar.gz
Algorithm Hash digest
SHA256 8c793b0e7a72f6cb819cd53e2be115121671d4e4d1c6305bd70cc0ed035f3b02
MD5 3ef1d18b6d63cbed059328aa5e746f09
BLAKE2b-256 2347ff9fdcfe251b132bf762ed0d79e56ce5a31b795e16e6b294ee76ae8848f0

See more details on using hashes here.

File details

Details for the file mistercar_screenshooter-1.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for mistercar_screenshooter-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4d4821ae9f8c47603fc42ff8f0c4a6df0bd1e2e5ec6cdace48a1726a78dbbbe0
MD5 2220cce72598799fbf6a454647b8c68e
BLAKE2b-256 457884ed553be0162d43a411ebcdd85050d3ef2c894219a037d32136e632de0b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page