Skip to main content

A handy tool for combining images into videos via FFmpeg.

Project description

Catframes

A script that concatenates frames. FFmpeg wrapper.

With this software, you can, for example,

  • create a timelapse video,
  • turn an animation rendered in a PNG sequence into a video,
  • or compress a sequence of frames from a surveillance camera using a video codec.

The script simply accepts folders with JPEG and PNG files as input and outputs MP4 or WebM.

Installation

From PyPI

I recommend to do it as root.

python3 -m pip install catframes

Installing dependencies:

Alpine: apk add ffmpeg font-dejavu

Debian/Ubuntu: apt-get install ffmpeg fonts-dejavu

Centos/RHEL: yum install ffmpeg dejavu-sans-mono-fonts

Windows: Get FFmpeg Windows builds

From source (Linux, Unix-like)

Catframes is a script. Everything, including tests, is contained in a single file that you can upload to a system yourself.

cp catframes.py /usr/local/bin/
chmod 755       /usr/local/bin/catframes.py
ln -s /usr/local/bin/catframes.py /usr/local/bin/catframes

Installing dependencies: exactly the same, except for Pillow.

If you don't want to use pip, the library usually can be installed from operating system repository.

Alpine: apk add py3-pillow

Debian/Ubuntu: apt-get install python3-pil

Centos/RHEL: yum install python3-pillow

It is better to run tests as a regular user.

python3 -m unittest discover /usr/local/bin/ -p catframes.py

From source (Windows)

  1. You need Python3 to be available in cmd as python3.
  2. Copy both catframes.py and catframes.bat to a folder (for instance, C:\Program Files\MyScripts).
  3. Add this folder to PATH environment variable.
  4. Install FFmpeg.
  5. Add the folder, where ffmpeg.exe is installed, to the PATH environment variable.
  6. Install Pillow.

You don't have to install fonts, because Windows already has Courier New.

You may install Pillow, using pip.

If you don't use pip for some reason, you may download Pillow *.whl file, corresponding to your Python version, unpack it and put PIL in your Python interpreter directory. This usually works. Files with whl extension are ordinary ZIP archives.

If everything is done, the following commands will work in any folder.

ffmpeg -version

catframes --help

You may run unit tests with the following line:

python3 -m unittest discover "C:\Program Files\MyScripts" -p catframes.py

Usage

Video encoding is a long process. If you are launching the program for the first time, a good way to try different options is to use --limit to make short video samples.

The command to run it with default settings looks like this:

catframes folderA folderB folderC result.webm

For automatic launches (through a CRON job, etc.), I recommend to add these options:

catframes -sf --port-range=10140:10240 folderA folderB folderC result.webm

Default settings

Frame rate: 30 frames per second.

You may change it with -r parameter. Acceptable values are from 1 to 60. All source frames will be included, so this parameter determines speed of your video record.

Compression quality: medium.

You may change it with -q parameter. Acceptable values are poor, medium, high.

Margin (background) color: black.

You may change it with --margin-color. It takes values in formats #rrggbb and #rgb (hexadecimal digits; #abc means #aabbcc).

Text overlays

There is a 3 by 3 grid. You can place labels in all cells except the central one.

Please, use --left, --right, --top, --left-top, etc.

Important: One of the cells must be reserved for important warnings. It is set by WARN value (in any case). By default, this is the top cell.

You can use any constant text in the labels, including line feeds (\n). You can also use a limited set of functions in curly brackets that output information about the source image or about the system.

To prevent special characters from being interpreted, you should use single quotes in Unix Shell, however, you must use double quotes in the Windows command line.

Example (Bash):

catframes \
    -r=5 --limit=10 \
    --left-top='Frame {frame:video}' \
    --left-bottom='{dir}/{fn}\n\nModified: {mtime}' \
    --right-bottom='Compressed {vtime:%Y-%m-%d %H:%M}' \
    folder video.webm

Read more about these functions in the docs.

See also

Documentation (in Russian)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

catframes-2024.2.0.tar.gz (39.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

catframes-2024.2.0-py3-none-any.whl (36.7 kB view details)

Uploaded Python 3

File details

Details for the file catframes-2024.2.0.tar.gz.

File metadata

  • Download URL: catframes-2024.2.0.tar.gz
  • Upload date:
  • Size: 39.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.4

File hashes

Hashes for catframes-2024.2.0.tar.gz
Algorithm Hash digest
SHA256 b4d4919396d6215f4eeb79298c6c63014936ee382e138bca149948cdb8b9e0ed
MD5 d1c9b6d20effe6e73110ebf089982076
BLAKE2b-256 42fa87e48d71aa2bbcbb173c7fa2ad471f7ed1f914f130756c9b6a68e9f90c2e

See more details on using hashes here.

File details

Details for the file catframes-2024.2.0-py3-none-any.whl.

File metadata

  • Download URL: catframes-2024.2.0-py3-none-any.whl
  • Upload date:
  • Size: 36.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.4

File hashes

Hashes for catframes-2024.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d2bc012bbc0749c2f8419c74bd8304c941a20d9df29ff31d7041fc31dc55b441
MD5 620b199ce608fcb61e99cdc13e1393b5
BLAKE2b-256 b132ea7558f7102663ca27f43ccbeea7dcc7a033d12ad1dea195fcb051f4c0d8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page