videoflow/videoflow
Python framework that facilitates the quick development of complex video analysis applications and other series-processing based applications in a multiprocessing environment.
What it solves
Videoflow is a framework for building distributed video and stream processing pipelines. It allows developers to define a processing graph (a directed acyclic graph or DAG) once and run it either locally for development or on Kubernetes for production, without changing the code.
How it works
Users describe their pipeline as a series of producers, processors, and consumers. Each node in the graph runs as an independent worker (a subprocess locally or a pod on Kubernetes) and communicates via a NATS JetStream message broker. Each node publishes its output to a specific broker subject and subscribes to its parents' subjects to reassemble inputs. To handle expensive setup like loading ML models, nodes use an open() method rather than the constructor.
Who it’s for
It is designed for developers building high-throughput video analytics pipelines that require scaling, GPU scheduling, and the ability to run complex processing chains across distributed environments.
Highlights
- Dual Execution Modes: Run the same pipeline locally as subprocesses or on Kubernetes as containers with no code changes.
- Distributed Architecture: Uses NATS JetStream for communication and Redis for payload storage.
- C-level Scaling: Supports per-node scaling, GPU scheduling, and autoscaling on Kubernetes.
- Language Agnostic: Can run components written in any language if they are shipped as container images.
- Built-in Vision Components: Includes off-the-shelf components for object detection, tracking, pose estimation, and segmentation.
- Robust Error Handling: Features a dead-letter queue (DLQ) for poison messages and automatic restarts for crashed nodes.
Related
- Project
- Project
- Project
- Project
- Project