1 заметка с тегом

таймлапс

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

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

Начал естественно с поиска готового решения. Перерыл весь бесплатный софт в аппсторе, но толкового не нашел ничего, а покупать кучу лишних функций в довесок к одной нужной я не захотел. В аппсторе наткнулся на программу 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!

2017   лайфхак   таймлапс