Comment prendre une capture d'écran toutes les n secondes?

16

Quel logiciel puis-je utiliser pour prendre des captures d'écran avec un intervalle défini? Je voudrais prendre des captures d'écran toutes les 2 secondes environ. La ligne de commande et l'interface graphique sont toutes deux correctes.

Je préférerais un logiciel qui peut également redimensionner et compresser chaque capture d'écran.

Seppo Erviälä
la source
2
Bonne chance pour espionner.
Oleh Prypin

Réponses:

19

Installez scrotpuis exécutez ceci:

while true; do scrot & sleep 2; done
Oli
la source
cela ne prendrait-il pas 2 secondes + temps de scrot pour courir?
Seppo Erviälä
1
Cela semble prendre une capture d'écran toutes les 2,5 secondes sur mon système. J'aimerais quelque chose de plus précis.
Seppo Erviälä
7
@Seppo: utilisez while true; do scrot & sleep 2; done. Ça va en arrière-plan scrot(il exécute scrot, mais ne bloque pas jusqu'à ce que scrot soit terminé)
Lekensteyn
2
Merci Lekensteyn, j'ai édité ma réponse sur cette base. Je ne pensais pas que quelques millisecondes feraient une différence, mais cela prend 1/2 et prendrait encore plus de temps sur un disque plus lent. Il y a un risque ici que sur un disque très lent avec un intervalle de 2 secondes approprié, il écrive constamment sur le disque ou pire encore, il remplisse tous les tampons jusqu'à ce que le système s'arrête. @Seppo s'assure que tout ce que vous faites a suffisamment de temps pour écrire sur le disque.
Oli
7
watch -n2 scrot

ou

while true; do scrot -d2; done
lukasz
la source
2
while true; do import -window root /path/to/where/you/want/to/save/`date`.png; done
markuz
la source
1
Vous devrez installer imagemagick pour que cela fonctionne. Vous pouvez ajouter une commande sleep au script pour lui faire prendre la capture d'écran toutes les 2 secondes, comme la question le demande.
Javier Rivera
1

Selon une modification de votre question:

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
la source