Таймлапс екрану в Mac OS X
Для одного робочого проєкту з картами захотів записати відео процесу роботи. Але процес малювання карти монотонний і не швидкий, тому звичайний запис екрану в реальному часі не підходить: записувати довго, потім відео треба прискорювати, комп’ютер починає грітися тощо. Згадав, що бачив ролики з прискореним процесом малювання та також захотів зробити схожий таймлапс з екрану (чи як це ще можна назвати).
Почав, звісно ж, із пошуку готового рішення. Перерив увесь безкоштовний софт в App Store, але нічого толкового не знайшов, а купувати купу зайвих функцій заради однієї потрібної не захотів. В App Store натрапив на програму Interval, яка просто збирає відеоролик із пачки зображень. І в мене одразу виникла ідея: робити скріншоти екрану через певні інтервали часу, а потім зібрати з цього ролик. Озброївшись маковським Automator та ознайомившись трохи з AppleScript, написав простий скрипт, який робить знімок екрану через задану кількість секунд і складає всі файли у визначену папку. Потім із цих зображень за допомогою “Інтервалу” збираємо відео.
Automator і AppleScript
Беремо Automator (стандартна програма для автоматизації на Mac) і створюємо просту схему:
- Скрипт для автоматичних скріншотів
- Блок із паузою
- Повторюємо попередні дії 30–60 хвилин, потім скрипт зупиняється. Скрипт також можна зупинити вручну, натиснувши в Automator кнопку Stop.
Ось так це все виглядає:

Скрипт в Automator
Сам скрипт для скріншотів працює дуже просто:
- Вказуємо папку для збереження скріншотів. У мене це Desktop/Screens.
- Задаємо змінну з часом створення скріншоту, щоб використати її у назві файлу.
- Безпосередньо команда захоплення картинки з екрану й збереження у вибрану папку.
- Остання частина просто зменшує ширину скріншоту до 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 і отримуємо готове відео:
Завантажте файл для Automator і спробуйте самі погратися з параметрами. Успіхів!
