Таймлапс экрана в Mac OS X

Alexander Kolodko
Sep 2, 2018 · 3 min read

Для рабочего проекта по картам захотел заснять видео процесса работы. Но процесс отрисовки карты монотонный и небыстрый, поэтому стандартная реалтаймовая запись не подходит: снимать долго, потом видео надо ускорять, комп начинает греться и так далее. Вспомнил, что видел ролики с ускоренным процессом рисования, и тоже захотел сделать такой таймлапс с экрана (или как это можно назвать?).

Начал естественно с поиска готового решения. Перерыл весь бесплатный софт в аппсторе, но толкового не нашел ничего, а покупать кучу лишних функций в довесок к одной нужной я не захотел. В аппсторе наткнулся на программу Interval, которая просто собирает видеоролик из пачки изображений. И у меня сразу родилась мысль делать скриншоты экрана через промежутки времени, а потом собрать из этого ролик. Вооружившись маковским Автоматором и почитав немного про AppleScript написал простой скрипт, который делает снимок экрана через заданное количество секунд и складывает все файлы в определенную папку. Потом из этих изображений с помощью «Интервала» собираем видео.

Автоматор и AppleScript

Берем маковский Автоматор и собираем простую конструкцию:

  • Скрипт для автоматических скриншотов
  • Блок с паузой
  • Повтор предыдущих действий 30–60 минут, потом скрипт останавливается. Скрипт также можно остановить вручную, нажав в Автоматоре кнопку Стоп.

Вот так это все выглядит:

Скрипт в автоматоре

Сам скрипт для скриншотов работает тоже довольно просто:

  1. Задаем папку для сохранения скринов. У меня это Desktop/Screens.
  2. Задаем переменную со временем скриншота, чтобы использовать его в имени файла.
  3. Непосредвественно сама команда захвата картинки с экрана и сохранения в выбранную вначале папку.
  4. И последняя часть просто делает уменьшение скриншота до 1280 пикселей по ширине. Если вам нужны скриншоты размером 1:1, то просто удалите эту часть кода и не используйте.

Код скрипта:

set ScreensDir to (path to home folder as string) & "Desktop:" & "Screens:"
set theDate to do shell script "date +%Y-%m-%d-%H-%M-%S"
-- Take a screen capture
set captureImg to ((POSIX path of ScreensDir) & theDate & ".jpg") as string
do shell script "/usr/sbin/screencapture -x -tjpg " & quoted form of captureImg
-- Resize image file
tell application "Image Events"
set this_image to open captureImg
scale this_image to size 1280
save this_image in captureImg
close this_image
end tell

Interval

Когда нужное количетсво скринов готово и сохранено в папку, открываем программу Interval. Жмакаем кнопку «Import» и указываем путь к папке с картинками. Когда картинки загрузились, можно нажать внизу кнопку пуск и посмотреть какая выставлена скорость смены кадров.

Главное окно

Во вкладке Settings выбираем формат видео, его размер и скорость смены кадров (frame rate). Чем больше число, тем больше скорость смены кадров. Для своего примера я брал 12 кадров в секунду.

Настройки

Жмем Export и получаем на выходе готовое видео:

Скачайте файл для Автоматора и сами попробуйте поиграться с настройками. Enjoy!

Alexander Kolodko

Written by

designer (web, UI, interfaces, wayfinding, identity & branding)

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade