Skip to main content

Time-lapse movie assembly

Project description

Time-Lapse assembling

PyPI License Build

This repo contains tools used to compile Time-lapse movies using ffmpeg. The ffmpeg utility is controlled via the ffmpeg-python wrapper.

Example usage of this package can be found in the time-lapse scripts repository.

Convert movie

Using time-lapse to find tif files, and create a movie called 'test_movie' with 24 fps and deflickered:

from time_lapse import output, source

source_input = source.get_input(['*.tif'], fps=24, deflicker=7, filters=None)
output.create_outputs(source_input, 'test_movie', verbose=False)

This can also be done via the CLI:

timelapse --name test_movie --pattern "*.tif" --fps 24 --deflicker 7

Inspection

By passing verbose=True to create outputs the following ffmpeg-python inspection methods will be performed.

Show the ffmpeg command options ffmpeg-python would use:

.get_args()

By using graphviz the graph from input to output can be shown using:

.view()

Installation

This package requires the ffmpeg tool to be installed.

brew install ffmpeg

Then install this package:

pip install time-lapse

Additionally, when using the verbose output option a graph will be rendered using graphviz, this requires the Graphviz library and the related Python package:

brew install graphviz
pip install time-lapse[graph]

Codec

For near-universal compatibility the H.264 codec is used. The following section describe some of the choices for specific configuration options.

See the ffmpeg wiki for additional information: https://trac.ffmpeg.org/wiki/Encode/H.264

Constant Rate Factor

This uses -crf 20 to set a constant rate factor, which means the overall quality of the movie should be constant. So bitrate varies to ensure this. Higher value is lower quality. The quality and bit rates at this value seem reasonable.

Preset

-preset slower is used to improve the compression ratio for the selected quality (crf), without taking too much time.

Faststart

-movflags +faststart is used to allow the movie to quickly start playing, while it is still loading or buffering.

Quicktime support

The codec defaults to YUV 444, which is not supported by Quicktime. So add pix_fmt yuv420p to fix Quicktime support.

Input

Select input frames

Use frames as input by giving a glob pattern which matches the desired images. Usually these will be tiff images so use -pattern_type glob -i "*.tiff".

Framerate

When using image sequences as input the framerate of the desired output should be given using -framerate 30.

Filters

Commonly used filters:

Steps

The optimal order for applying deflicker/scale/watermarking is the following:

  • First deflicker the video to ensure it is equally deflickered for all outputs
  • Then scale and crop the videos to fit the desired final resolutions
  • Then add the watermark (which should not be deflickered and a constant size)

Scale video

Add scaling to ensure it fits in given dimensions. Negative values for width or height make the encoder figure out the size by itself, keeping the aspect ratio of the source. The integer of the negative value, i.e. 4 for -4, means that the size should be devisble by that value. TODO: does it just scale/squish the video or crop?:

-vf scale=1920:-2
-vf scale=960:540:aspect..

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

time_lapse-8.0.tar.gz (2.4 MB view details)

Uploaded Source

Built Distribution

time_lapse-8.0-py3-none-any.whl (51.9 kB view details)

Uploaded Python 3

File details

Details for the file time_lapse-8.0.tar.gz.

File metadata

  • Download URL: time_lapse-8.0.tar.gz
  • Upload date:
  • Size: 2.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.32.3

File hashes

Hashes for time_lapse-8.0.tar.gz
Algorithm Hash digest
SHA256 cf3b78e76d169aac470df367d414c2332183fbe38213475379eabec51789ee28
MD5 36c1a8e5a4f257b56acc98ece5b1ab32
BLAKE2b-256 1cacd4032867f96a07f0d2085d86d8aa87e2ced611deb7b39c8a5183123b2d7e

See more details on using hashes here.

Provenance

File details

Details for the file time_lapse-8.0-py3-none-any.whl.

File metadata

  • Download URL: time_lapse-8.0-py3-none-any.whl
  • Upload date:
  • Size: 51.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.32.3

File hashes

Hashes for time_lapse-8.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d718a35d5faa3aba2a3593a72b8b5e06246f0fb72dbdbb1ccc8a170327505189
MD5 eca781951a65186011217dfde7518f33
BLAKE2b-256 90dd147014045641f809fc82e21ff35bbc90e0f89a0278bd362f3f742d748fda

See more details on using hashes here.

Provenance

Supported by

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