Wie mache ich alle n Sekunden einen Screenshot?

16

Mit welcher Software kann ich Screenshots mit einem festgelegten Intervall aufnehmen? Ich möchte ungefähr alle 2 Sekunden Screenshots machen. Kommandozeile und GUI sind beide in Ordnung.

Ich würde eine Software bevorzugen, die auch die Größe jedes Screenshots ändern und komprimieren kann.

Seppo Erviälä
quelle
2
Viel Glück beim Ausspähen.
Oleh Prypin

Antworten:

19

Installiere scrotund führe dies aus:

while true; do scrot & sleep 2; done
Oli
quelle
Wäre das nicht 2 Sekunden + Zeit, die der Scrot benötigt, um zu laufen?
Seppo Erviälä
1
Dies scheint auf meinem System alle 2,5 Sekunden einen Screenshot zu machen. Ich hätte gerne etwas genaueres.
Seppo Erviälä
7
@Seppo: benutzen while true; do scrot & sleep 2; done. Es wird im Hintergrund ausgeführt scrot(es wird scrot ausgeführt, aber nicht blockiert, bis scrot abgeschlossen ist)
Lekensteyn
2
Danke Lekensteyn, ich habe meine Antwort daraufhin bearbeitet. Ich dachte nicht, dass ein paar Millisekunden einen Unterschied machen würden, aber es dauert 1/2 und würde auf einer langsameren Festplatte noch länger dauern. Hier besteht die Gefahr, dass auf einer sehr langsamen Festplatte mit einer angemessenen Lücke von 2 Sekunden ständig auf die Festplatte geschrieben wird oder, noch schlimmer, alle Puffer voll werden, bis das System zum Stillstand kommt. @Seppo Vergewissern Sie sich, dass alles, was Sie tun, genügend Zeit hat, um auf die Festplatte zu schreiben.
Oli
7
watch -n2 scrot

oder

while true; do scrot -d2; done
Lukasz
quelle
2
while true; do import -window root /path/to/where/you/want/to/save/`date`.png; done
markuz
quelle
1
Sie müssen imagemagick installieren, damit dies funktioniert. Sie können dem Skript einen Befehl für den Ruhezustand hinzufügen, damit der Screenshot alle 2 Sekunden erstellt wird, wie in der Frage angegeben.
Javier Rivera
1

Nach einer Bearbeitung Ihrer Frage:

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
quelle