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.3.0.tar.gz (39.8 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.3.0-py3-none-any.whl (37.5 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for catframes-2024.3.0.tar.gz
Algorithm Hash digest
SHA256 015223c2bbd905befaf1a961ed1fe91051ffc5bdcb981e20dc92fe9d9f72eb18
MD5 037017c17dc33714e2a59b4a448a95a0
BLAKE2b-256 f9dfb384e609bdb24bb3c805f61a466e228dc35845aa897f8a561f5f1eed72b1

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for catframes-2024.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7772abbaf0cb5798cdfb6c56da3986436c085074edbd4c93d279eea0842ab602
MD5 eece8b7cdde23156c0161ffa9d4ad660
BLAKE2b-256 a962762fd21347b2e66da50b7a23507d41b7a5a91c3cc49938d3380a4a752700

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