Как делать снимок экрана каждую n секунду?

16

Какое программное обеспечение можно использовать для создания снимков экрана с заданным интервалом? Я хотел бы делать скриншоты каждые 2 секунды или около того. Командная строка и графический интерфейс в порядке.

Я бы предпочел программное обеспечение, которое также может изменять размер и сжимать каждый скриншот.

Сеппо Эрвиаля
источник
2
Удачи в шпионаже.
Олег Припин

Ответы:

19

Установите scrotи запустите это:

while true; do scrot & sleep 2; done
Оли
источник
разве это не заняло бы 2 секунды + время, которое бегает мошенник?
Сеппо Эрвиаля
1
Кажется, это делает снимок экрана каждые 2,5 секунды в моей системе. Я хотел бы что-то более точное.
Сеппо Эрвяля
7
@Seppo: использовать while true; do scrot & sleep 2; done. Это будет фон scrot(он запускает scrot, но не блокирует, пока scrot не будет сделан)
Lekensteyn
2
Спасибо Лекенштейн, я отредактировал свой ответ, основываясь на этом. Я не думал, что несколько миллисекунд будут иметь значение, но это займет 1/2 и займет еще больше времени на более медленном диске. Здесь есть риск, что на очень медленном диске с надлежащим 2-секундным промежутком он будет постоянно записывать на диск или, что еще хуже, заполнит все буферы, пока система не остановится. @ Сеппо, убедитесь, что у вас достаточно времени для записи на диск.
Оли
7
watch -n2 scrot

или

while true; do scrot -d2; done
Лукаш
источник
2
while true; do import -window root /path/to/where/you/want/to/save/`date`.png; done
Markuz
источник
1
Вам нужно будет установить imagemagick, чтобы это работало. Вы можете добавить команду сна в сценарий, чтобы он делал снимок экрана каждые 2 секунды, как задает вопрос.
Хавьер Ривера
1

Согласно редактированию вашего вопроса:

import threading
    import os

    def capture(i):
        i += 1
        threading.Timer(2.0, capture, [i]).start()
        fill = str(i).zfill(5)
        os.system("scrot scrot-%s.jpg" % fill)
        os.system("streamer -o streamer-%s.jpeg -s 320x240 -j 100" % fill)

    capture(0)
JRG
источник