ffmpeg filter graph bindings for python
Project description
Design proposal
Biblioteka ma za zadanie zastąpić i rozszerzyć istniejącą bibliotekę (https://github.com/kkroening/ffmpeg-python)
Minimalną funkcjonalność, którą chcemy zaimplementować, to ta oferowana przez powyższą bibliotekę, czyli korzystanie z grafów filtrów poprzez prosty interfejs. Poza tym, zależy nam na lepszej integracji z IDE (opisy filtrów w docstringach, typy argumentów), żeby ograniczyć potrzebę krążenia po dokumentacji FFmpeg.
Stack technologiczny
szablon cookiecutter: https://github.com/ionelmc/cookiecutter-pylibrary
dokumentacja sphinx
linter ruff
mypy do sprawdzanie statycznego typowania
Poetry do budowania paczki
tox do automatycznych testów
CI/CD przy użyciu github actions (uruchomienie testów, budowanie paczki, aktualizacja Changelog)
codecov do badania pokrycia testami kodu
Planowany rozkład jazdy
- 18.03-24.03
Struktura projektu (cookiecutter)
Chcemy mieć możliwość uruchomienia testów, zbudowania dokumentacji (narazie pustej), zbudowania paczki.
- 25.03-31.03
Podstawowa interakcja z procesem FFmpeg jako subproces
metody input, output
testy potwierdzające działanie
- 01.04-07.04
metoda filter, run, compile
- 08.04-14.04
implementacja części logiki grafu filtrów
jakiś podzbiór funkcjonalności np. concat tylko
- 15.04-21.04
dalsza część logiki grafów
- 22.04-28.04
poboczne metody: probe, view, run_async
- 29.04-05.05
dodanie osobnych metod na popularne filtry np. hfilp.
? automatyczna generacja metod z kodu źródłowego ffmpeg
Tygodnie 8-13 przewidziane na potencjalne przesunięcia w planie.
Dokumentacja będzie pisana regularnie wraz z kodem jako docstringi
Możliwe ścieżki rozwouju
implementacja filtrów złożonych z wieloma wyjściami
wygenerowanie pozostałych filtrów złożonych
dodać podpowiedzi przy fluent interface
dodać obsługę filtrów złożonych do view
przyjmować wejście i wyjście nie tylko przez plik np. kamera na żywo
ZPRP FFmpeg
docs |
|
---|---|
tests |
|
package |
Implementation of the successor to the ffmpeg-python library
Free software: MIT license
Installation
The package is available on pip:
pip install zprp_ffmpeg
Getting started
A minimal example showing basic usage of the library:
import zprp_ffmpeg
stream = zprp_ffmpeg.input("input.mp4")
stream = zprp_ffmpeg.hflip(stream)
stream = zprp_ffmpeg.output(stream, "output.mp4")
zprp_ffmpeg.run(stream)
Check out more examples
Further documentation is available at https://zprp-ffmpeg.readthedocs.io/en/latest/
Development
Project uses poetry for package management. Check out their docs for installation steps. Tests are managed by tox, which uses pytest under the hood.
To install package in development mode, enter the virtual environment managed by poetry, then use install command:
poetry shell
poetry install --with="typecheck"
To run tests on multiple python interpreters, build documentation, check for linting issues, run:
tox
However, this might be cumbersome, since it requires having all supported python interpreters available. To run only selected interpreters, use -e
option, for example:
tox -e py312-lin,check #python 3.12 on linux, and linter checks
You can view all defined interpreters with tox -l
To check for typing and linting issues manually, run:
mypy src
pre-commit run --all-files
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file zprp_ffmpeg-2.2.0.tar.gz
.
File metadata
- Download URL: zprp_ffmpeg-2.2.0.tar.gz
- Upload date:
- Size: 83.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.8.10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 18947be0757bf16f05a11ac0031baba52406e6ece6c17777ae7f011a408d8d70 |
|
MD5 | 48616f43918bbc1ad30abd1a165a35ad |
|
BLAKE2b-256 | fd2dd663fe6fe5cc456204c07f16ced43740eed5358cf1132aa4b3d53549a623 |