BoboTiG / python-mss

An ultra fast cross-platform multiple screenshots module in pure Python using ctypes.
https://pypi.org/project/mss/
MIT License
1.01k stars 93 forks source link

How to increase FPS? FPS is limited to monitor Frame Rate #215

Open DavraYoung opened 2 years ago

DavraYoung commented 2 years ago

General information:

Description

I try to use MSS library to capture screen game on my Windows PC, however capture frame rates are not getting higher than 60FPS. Although game is running on 160 FPS, MSS is limited to only 60.

I tried:

  1. Changing Monitor Framerate to 30 and mss fps also dropped to 30.
  2. Changing Monitor resolution, nothing changed
  3. Changing size of screen capture (Region of Interest), it did not change FPS

So I suspect, the problem is not Hardware related and limitation comes from software.

Code

    width = 512 # roi
    height = 512  # roi
    mon = {
        # "left": int(3840 / 2 - width / 2),
        # "top": int(2160 / 2 - height / 2),
        "left": int(1920 / 2 - width / 2),
        "top": int(1080 / 2 - height / 2),
        "width": width,
        "height": height,
    }

    sct = mss()
    fps = [i for i in range(30)]
    index = 0
    prev_bytes = None
    while True:
        if (
            not disabed_capture
        ):
            start_time = time.time()
            _bytes = sct.grab(mon)
            if prev_bytes is not None and _bytes == prev_bytes:
                print("SAME!")
                continue
            prev_bytes = _bytes
            frame = np.array(_bytes)
            queue.put([time.time(), frame])
            index = (index + 1) % len(fps)
            fps[index] = 1 / (time.time() - start_time)
            if index % 30 == 0:
                print("SCREENSHOT FPS: ", sum(fps) / len(fps))

Upvote & Fund

Fund with Polar

CTPaHHuK-HEbA commented 2 years ago

Monitor 1: 3840x2160 60Hz

Set monitor if posible to 75Hz or more - fps up to 75. In my system Win10 works like this

Similar problem #196

DavraYoung commented 2 years ago

@CTPaHHuK-HEbA I cannot change fps to higher, because my monitor supports only 60hz.

Overriding it using Nvidia control panel breaks hdmi signal somehow and the picture on the screen becomes grey.

freeAhao commented 2 years ago

My Windows PC:

MSS fps: 60 FPS MAX

My Linux Laptop:

MSS FPS: 200+ FPS