How to Repeatedly capture fixed screen region to sequence of images

You can use screencapture commandline utility. Create an Automator Service (takes no input) which will do a shell command and assign keyboard shortcut to it.

The shell script will look like this:

/usr/sbin/screencapture -R0,0,1000,400 /path/to/save/FileName$(date +"%m_%d_%Y_%H_%M_%S_%s").png

screencapture has -R modifier not listed in man but it's listed in help as:

-R<x,y,w,h> capture screen rect

The values I used above captured this image which also shows how the rect coordinates worked.

Change x,y,w,h values for those You need.

The date +"%m_%d_%Y_%H_%M_%S_%s" adds a timestamp to the file name

enter image description here


You can actually use Screencapture to find the rect you want by using cmd +shift+4 which will give you some cross hairs with the numbers on for click drag release capture rect.

enter image description here


In Terminal.app typing: /usr/sbin/screencapture -h will give you the help documentation

usage: screencapture [-icMPmwsWxSCUtoa] [files]
  -c         force screen capture to go to the clipboard
  -C         capture the cursor as well as the screen. only in non-interactive modes
  -d         display errors to the user graphically
  -i         capture screen interactively, by selection or window
               control key - causes screen shot to go to clipboard
               space key   - toggle between mouse selection and
                             window selection modes
               escape key  - cancels interactive screen shot
  -m         only capture the main monitor, undefined if -i is set
  -M         screen capture output will go to a new Mail message
  -o         in window capture mode, do not capture the shadow of the window
  -P         screen capture output will open in Preview
  -s         only allow mouse selection mode
  -S         in window capture mode, capture the screen not the window
  -t<format> image format to create, default is png (other options include pdf, jpg, tiff and other formats)
  -T<seconds> Take the picture after a delay of <seconds>, default is 5
  -w         only allow window selection mode
  -W         start interaction in window selection mode
  -x         do not play sounds
  -a         do not include windows attached to selected windows
  -r         do not add dpi meta data to image
  -l<windowid> capture this windowsid
  -R<x,y,w,h> capture screen rect
  files   where to save the screen capture, 1 file per screen

Have you considered batch cropping the screenshots? For example, using Imagemagick (which you can install via homebrew: brew install imagemagick):

cp original.png test.png #backup original!
mogrify -crop 800x600+100+200 +repage test.png

where 800x600 is the size of the region, and +100+200 the X/Y offset. This can be applied to several images at once by simply specifying several filenames. Note that this will modify your images (in-place), so operate on copies.