Кратко
Наложение метаинформации
Catframes умеет выводить текстовую информацию о кадрах и о системе
поверх изображения, впечатывать ее в итоговое видео.
Положение надписей не зависит ни от разрешений,
ни от соотношений сторон.
Надписи читаются как на светлом, так и на тёмном фоне
Установка
Из PyPI
Вы можете установить Catframes через pip.
Установка из-под root наиболее удобна, т.к. исполняемый файл сразу попадает
в PATH
для всех пользователей и не редактируется кем попало.
Пример установки на чистый Alpine:
apk add python3
python3 -m ensurepip
python3 -m pip install catframes
apk add ffmpeg
apk add font-dejavu
Для установки FFmpeg должна быть раскоментирована строчка community-репозитория в /etc/apk/repositories
.
Вручную
Catframes — это скрипт.
Всё, включая тесты, содержится в одном файле,
который можно самостоятельно закинуть в систему.
Пример установки в Alpine:
apk add python3
apk add py3-pillow
apk add ffmpeg
apk add font-dejavu
cp catframes.py /usr/local/bin/
chmod 755 /usr/local/bin/catframes.py
ln -s /usr/local/bin/catframes.py /usr/local/bin/catframes
Тесты рекомендуется запускать не из-под рута:
python3 -m unittest discover /usr/local/bin/ -p catframes.py
Использование
Это консольная команда, принимающая список папок и путь к получающемуся видеофайлу.
Опции по-умолчанию: 30 кадров в секунду, чёрный цвет полей, среднее качество.
Формат видео выводится из расширения файла (поддерживаются mp4 и webm).
Папки будут склеены в том порядке, в котором они указаны,
а кадры внутри — в естественном порядке (natural order).
Это «полуинтерактивный» режим: команда упадёт, если директории заданы неправильно или в них нет изображений,
а также при существующем видеофайле.
catframes папка1 папка2 папка3 результат.webm
Если вы прописываете команду в CRON или иначе запускаете ее автоматически,
скорее всего, падение недопустимо: данные должны быть пережаты и удалены,
даже если что-то идет не так, чтобы освободить место на диске.
Две опции сделаны специально для этого:
-
-s, --sure
-
-f, --force
catframes -sf папка1 папка2 папка3 результат.webm
Первая опция означает, что вы уверены в правильности путей к директориям,
и, если их нет или они пустые, в видео будут вставлены короткие сообщения
об инциденте (красный экран с сообщением по центру).
Таким образом, видео может быть создано вообще без исходного материала.
Вторая опция приводит к перезаписи файла, если он есть.
Скрипт использует протокол HTTP, чтобы передавать обработанные кадры FFmpeg.
Так кадры могут обрабатываться во время сжатия без необходимости записывать их на диск.
HTTP-порт выбирается автоматически из свободных портов. Это не проблема при запуске
на домашнем компьютере. На серверах обычно порты распределены между
сервисами. Если случайно занять порт сервиса во время перезапуска сервиса,
с точки зрения пользователя может произойти отказ системы. Чтобы этого избежать,
есть еще опция для указания разрешенного диапазона портов: -p минимальный:максимальный
.
Надписи добавляются параметрами --left
, --right
, --top-left
и т. п.
Они могут содержать произвольный текст и значения в фигурных скобках.
Подробнее об этом «языке разметки оверлеев» читайте в документации.