Таймлапс экрана в Mac OS X
Для рабочего проекта по картам захотел заснять видео процесса работы. Но процесс отрисовки карты монотонный и небыстрый, поэтому стандартная реалтаймовая запись не подходит: снимать долго, потом видео надо ускорять, комп начинает греться и так далее. Вспомнил, что видел ролики с ускоренным процессом рисования, и тоже захотел сделать такой таймлапс с экрана (или как это можно назвать?).
Начал естественно с поиска готового решения. Перерыл весь бесплатный софт в аппсторе, но толкового не нашел ничего, а покупать кучу лишних функций в довесок к одной нужной я не захотел. В аппсторе наткнулся на программу Interval, которая просто собирает видеоролик из пачки изображений. И у меня сразу родилась мысль делать скриншоты экрана через промежутки времени, а потом собрать из этого ролик. Вооружившись маковским Автоматором и почитав немного про AppleScript написал простой скрипт, который делает снимок экрана через заданное количество секунд и складывает все файлы в определенную папку. Потом из этих изображений с помощью «Интервала» собираем видео.
Автоматор и AppleScript
Берем маковский Автоматор и собираем простую конструкцию:
- Скрипт для автоматических скриншотов
- Блок с паузой
- Повтор предыдущих действий 30–60 минут, потом скрипт останавливается. Скрипт также можно остановить вручную, нажав в Автоматоре кнопку Стоп.
Вот так это все выглядит:
Скрипт в автоматоре
Сам скрипт для скриншотов работает тоже довольно просто:
- Задаем папку для сохранения скринов. У меня это 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 и получаем на выходе готовое видео:
Скачайте файл для Автоматора и сами попробуйте поиграться с настройками. Enjoy!