{"id":22119599,"url":"https://github.com/pleiszenburg/bewegung","last_synced_at":"2025-07-22T23:03:26.991Z","repository":{"id":57414786,"uuid":"286426096","full_name":"pleiszenburg/bewegung","owner":"pleiszenburg","description":"a versatile video renderer","archived":false,"fork":false,"pushed_at":"2022-03-27T19:14:05.000Z","size":1561,"stargazers_count":28,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-21T13:51:26.999Z","etag":null,"topics":["animated-gif","animation","animation-framework","compositor","h264","renderer","rendering","rendering-engine","scientific-visualization","video","visualization"],"latest_commit_sha":null,"homepage":"https://bewegung.readthedocs.io/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-2.1","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pleiszenburg.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGES.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-08-10T09:01:26.000Z","updated_at":"2024-10-13T20:19:00.000Z","dependencies_parsed_at":"2022-08-30T06:51:23.363Z","dependency_job_id":null,"html_url":"https://github.com/pleiszenburg/bewegung","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/pleiszenburg/bewegung","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pleiszenburg%2Fbewegung","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pleiszenburg%2Fbewegung/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pleiszenburg%2Fbewegung/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pleiszenburg%2Fbewegung/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pleiszenburg","download_url":"https://codeload.github.com/pleiszenburg/bewegung/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pleiszenburg%2Fbewegung/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266586905,"owners_count":23952205,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-22T02:00:09.085Z","response_time":66,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["animated-gif","animation","animation-framework","compositor","h264","renderer","rendering","rendering-engine","scientific-visualization","video","visualization"],"created_at":"2024-12-01T14:16:01.176Z","updated_at":"2025-07-22T23:03:26.967Z","avatar_url":"https://github.com/pleiszenburg.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"![bewegung_logo](https://github.com/pleiszenburg/bewegung/blob/master/docs/_static/logo01.png?raw=true \"bewegung logo\")\n\n# BEWEGUNG\n\n*/bəˈveːɡʊŋ/ ([German, noun, feminine: motion/movement/animation](https://dict.leo.org/englisch-deutsch/bewegung))*\n\n[![docs_master](https://readthedocs.org/projects/bewegung/badge/?version=latest\u0026style=flat-square \"Documentation Status: master / release\")](https://bewegung.readthedocs.io/en/latest/)\n[![license](https://img.shields.io/pypi/l/bewegung.svg?style=flat-square \"LGPL 2.1\")](https://github.com/pleiszenburg/bewegung/blob/master/LICENSE)\n[![status](https://img.shields.io/pypi/status/bewegung.svg?style=flat-square \"Project Development Status\")](https://github.com/pleiszenburg/bewegung/issues)\n[![pypi_version](https://img.shields.io/pypi/v/bewegung.svg?style=flat-square \"pypi version\")](https://pypi.python.org/pypi/bewegung)\n[![conda_version](https://img.shields.io/conda/vn/conda-forge/bewegung.svg?style=flat-square \"conda version\")](https://anaconda.org/conda-forge/bewegung)\n[![pypi_versions](https://img.shields.io/pypi/pyversions/bewegung.svg?style=flat-square \"Available on PyPi - the Python Package Index\")](https://pypi.python.org/pypi/bewegung)\n[![chat](https://img.shields.io/matrix/bewegung:matrix.org.svg?style=flat-square \"Matrix Chat Room\")](https://matrix.to/#/#bewegung:matrix.org)\n[![mailing_list](https://img.shields.io/badge/mailing%20list-groups.io-8cbcd1.svg?style=flat-square \"Mailing List\")](https://groups.io/g/bewegung-dev)\n\n## Synopsis\n\n`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.\n\n## Installation\n\n`bewegung` can be installed both via ``conda`` and via ``pip``.\n\n### Via `conda`\n\nAn almost complete installation can be triggered by running:\n\n```bash\nconda install -c conda-forge bewegung\n```\n\nPlease note that [mplcairo](https://github.com/matplotlib/mplcairo), a dependency of `bewegung` and alternative backend for `matplotlib`, is currently not available via `conda` and must be installed manually. `bewegung` [does also work without `mplcairo` present](https://bewegung.readthedocs.io/en/latest/canvas.html#acceleratingmatplotlib) and falls back to the `cairo` backend of `matplotlib`.\n\n### Via `pip`\n\nA bare **minimum** of `bewegung` can be installed with Python's package manager `pip`:\n\n```bash\npip install -vU bewegung\n```\n\nA **complete** installation of all optional Python components and development tools can be triggered by running:\n\n```bash\npip install -vU bewegung[all]\n```\n\nCertain non-Python **prerequisites** 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.\n\n## Example\n\nSee [`demo.py`](https://github.com/pleiszenburg/bewegung/blob/master/demo/demo.py).\n\nYou can directly test it by running:\n\n```bash\ncurl https://raw.githubusercontent.com/pleiszenburg/bewegung/master/demo/demo.py | python3\n```\n\nThis resulting `video.mp4` file should look like this:\n\n[![bewegung standard demo](https://img.youtube.com/vi/4NFXQ73weMA/sddefault.jpg)](https://www.youtube.com/watch?v=4NFXQ73weMA)\n\n## Usage\n\nSee [documentation](https://bewegung.readthedocs.io).\n\n`bewegung`'s development status is \"well-tested alpha\". Its API should not be considered stable until the project is labeled \"beta\" or better.\n\n`bewegung` can be drastically accelerated by deactivating debugging features. See [relevant section in the documentation](https://bewegung.readthedocs.io/en/latest/performance.html#typecheckingperformance).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpleiszenburg%2Fbewegung","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpleiszenburg%2Fbewegung","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpleiszenburg%2Fbewegung/lists"}