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) once and run it either locally for development or on Kubernetes for production scaling, without changing the code.

How it works

  • Graph-Based Architecture: Users describe a pipeline as a set of producers, processors, and consumers.
  • Distributed Execution: Each node in the graph runs as an independent worker (a subprocess locally or a pod on Kubernetes) that communicates via a NATS JetStream message broker.
  • Node Communication: Every node publishes its output to a specific broker subject and subscribes to the inputs of its parents, enabling complex topologies like fan-out and multi-parent joins.
  • Deployment: The framework handles the compilation of the graph into Kubernetes manifests, including GPU scheduling, health probes, and autoscaling.

Who it’s for

  • Developers building high-throughput video processing applications.
  • ML engineers needing to deploy computer vision models (object detection, tracking, pose estimation) in a distributed environment.
  • Teams requiring a seamless transition from local prototyping to Kubernetes-based production scaling.

Highlights

  • Hybrid Execution: Run the same pipeline locally or on Kubernetes with zero code changes.
  • Language Agnostic: Supports components written in any language as long as they are shipped as container images.
  • GPU Integration: Built-in support for GPU scheduling, including handling NVIDIA device plugins and time-slicing for shared GPU access.
  • Pre-built Components: Ships with off-the-shelf nodes for common vision tasks like segmentation and object detection.

Related

  • Project
  • Project
  • Project
  • Project
  • Project