Metadata-Version: 2.1
Name: bewegung
Version: 0.0.1
Summary: a versatile video renderer
Home-page: https://github.com/pleiszenburg/bewegung
Author: Sebastian M. Ernst
Author-email: ernst@pleiszenburg.de
License: LGPLv2
Download-URL: https://github.com/pleiszenburg/bewegung/archive/v0.0.1.tar.gz
Keywords: video,animation,animation-framework,rendering,rendering,rendering-engine,compositor
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Education
Classifier: Intended Audience :: Financial and Insurance Industry
Classifier: Intended Audience :: Healthcare Industry
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: GNU Lesser General Public License v2 (LGPLv2)
Classifier: Operating System :: MacOS
Classifier: Operating System :: POSIX :: BSD
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Topic :: Artistic Software
Classifier: Topic :: Education
Classifier: Topic :: Multimedia
Classifier: Topic :: Multimedia :: Graphics
Classifier: Topic :: Multimedia :: Graphics :: Presentation
Classifier: Topic :: Multimedia :: Sound/Audio
Classifier: Topic :: Multimedia :: Sound/Audio :: Editors
Classifier: Topic :: Multimedia :: Sound/Audio :: Mixers
Classifier: Topic :: Multimedia :: Video
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Scientific/Engineering :: Visualization
Classifier: Topic :: Software Development :: Libraries
Requires-Python: >=3.6
Description-Content-Type: text/markdown
Requires-Dist: Pillow
Provides-Extra: all
Requires-Dist: matplotlib ; extra == 'all'
Requires-Dist: PyGObject ; extra == 'all'
Requires-Dist: pycairo ; extra == 'all'
Requires-Dist: twine ; extra == 'all'
Requires-Dist: numba ; extra == 'all'
Requires-Dist: setuptools ; extra == 'all'
Requires-Dist: numpy ; extra == 'all'
Requires-Dist: typeguard ; extra == 'all'
Requires-Dist: wheel ; extra == 'all'
Requires-Dist: sphinx-rtd-theme ; extra == 'all'
Requires-Dist: datashader ; extra == 'all'
Requires-Dist: sphinxembeddedvideos ; extra == 'all'
Requires-Dist: Sphinx ; extra == 'all'
Requires-Dist: tqdm ; extra == 'all'
Requires-Dist: black ; extra == 'all'
Requires-Dist: mplcairo ; extra == 'all'
Requires-Dist: sphinx-autodoc-typehints ; extra == 'all'
Requires-Dist: python-language-server[all] ; extra == 'all'
Requires-Dist: ipython ; extra == 'all'
Requires-Dist: psutil ; extra == 'all'
Provides-Extra: cairo
Requires-Dist: pycairo ; extra == 'cairo'
Provides-Extra: datashader
Requires-Dist: datashader ; extra == 'datashader'
Provides-Extra: dev
Requires-Dist: black ; extra == 'dev'
Requires-Dist: python-language-server[all] ; extra == 'dev'
Requires-Dist: psutil ; extra == 'dev'
Requires-Dist: setuptools ; extra == 'dev'
Requires-Dist: Sphinx ; extra == 'dev'
Requires-Dist: sphinx-autodoc-typehints ; extra == 'dev'
Requires-Dist: sphinx-rtd-theme ; extra == 'dev'
Requires-Dist: sphinxembeddedvideos ; extra == 'dev'
Requires-Dist: twine ; extra == 'dev'
Requires-Dist: wheel ; extra == 'dev'
Provides-Extra: docs
Requires-Dist: matplotlib ; extra == 'docs'
Requires-Dist: datashader ; extra == 'docs'
Requires-Dist: ipython ; extra == 'docs'
Requires-Dist: sphinxembeddedvideos ; extra == 'docs'
Requires-Dist: pycairo ; extra == 'docs'
Requires-Dist: Sphinx ; extra == 'docs'
Requires-Dist: tqdm ; extra == 'docs'
Requires-Dist: twine ; extra == 'docs'
Requires-Dist: black ; extra == 'docs'
Requires-Dist: numba ; extra == 'docs'
Requires-Dist: setuptools ; extra == 'docs'
Requires-Dist: numpy ; extra == 'docs'
Requires-Dist: typeguard ; extra == 'docs'
Requires-Dist: wheel ; extra == 'docs'
Requires-Dist: mplcairo ; extra == 'docs'
Requires-Dist: sphinx-autodoc-typehints ; extra == 'docs'
Requires-Dist: python-language-server[all] ; extra == 'docs'
Requires-Dist: sphinx-rtd-theme ; extra == 'docs'
Requires-Dist: psutil ; extra == 'docs'
Provides-Extra: drawingboard
Requires-Dist: pycairo ; extra == 'drawingboard'
Requires-Dist: PyGObject ; extra == 'drawingboard'
Provides-Extra: ipython
Requires-Dist: ipython ; extra == 'ipython'
Provides-Extra: matplotlib
Requires-Dist: numpy ; extra == 'matplotlib'
Requires-Dist: matplotlib ; extra == 'matplotlib'
Requires-Dist: pycairo ; extra == 'matplotlib'
Requires-Dist: mplcairo ; extra == 'matplotlib'
Provides-Extra: numba
Requires-Dist: numba ; extra == 'numba'
Provides-Extra: numpy
Requires-Dist: numpy ; extra == 'numpy'
Provides-Extra: tqdm
Requires-Dist: tqdm ; extra == 'tqdm'
Provides-Extra: typeguard
Requires-Dist: typeguard ; extra == 'typeguard'

# BEWEGUNG

## Synopsis

[`bewegung`](https://dict.leo.org/englisch-deutsch/bewegung) is a versatile video renderer, primarily targeting scientific visualizations of large quantities of data. Its core concepts are *sequences* and *layers*. Sequences describe a certain time span within a video and can overlap. Each sequence can hold multiple layers. Layers can be generated with [`cairo`](https://cairographics.org/), [`Pillow`](https://pillow.readthedocs.io), [`datashader`](https://datashader.org/), [`matplotlib`](https://matplotlib.org/) and `bewegung`'s internal drawing system [`DrawingBoard`](https://bewegung.readthedocs.io/en/latest/canvas.html). Final compositing of every video frame and video effects are implemented via `Pillow`. Video encoding is handled by `ffmpeg`. `bewegung` also includes a simple [vector algebra system](https://bewegung.readthedocs.io/en/latest/vectors.html) and a ["camera" for 3D to 2D projections](https://bewegung.readthedocs.io/en/latest/camera.html). `bewegung` is developed with ease of use, compute time and memory efficiency in mind.

## Installation

A bare minimum of `bewegung` can be installed with Python's package manager `pip`:

```bash
pip install -vU bewegung
```

A complete installation of all optional Python components and development tools can be triggered by running:

```bash
pip install -vU bewegung[all]
```

Certain non-Python components must installed separately and before invoking the above command. [For detailed instructions, see documentation](https://bewegung.readthedocs.io/en/latest/installation.html). Most notably, `ffmpeg` should be installed for producing actual video files instead of video frames as individual files. See [download section](https://ffmpeg.org/download.html) of the `ffmpeg` project website for further instructions.

## Example

See [`demo.py`](https://github.com/pleiszenburg/bewegung/blob/master/demo/demo.py).

## Usage

See [documentation](https://bewegung.readthedocs.io) (work in progress).

`bewegung`'s development status is "well-tested alpha". Its API should not be considered stable until the project is labeled "beta" or better, although significant changes are very unlikely.

`bewegung` can be drastically accelerated by deactivating debugging features. See [relevant section in the documentation](https://bewegung.readthedocs.io/en/latest/debug.html).


