videoflow 是计算机视觉领域的开源项目,由 videoflow 开发,2019 年首次发布。
在全站 13,090 个收录项目中,它的 GitHub 星标数(1,039)位列前 30%,在计算机视觉分类中处于中上游。
项目目前处于活跃维护状态,最近一次代码更新于 2026-09-21。开源免费,基于MIT许可证。
它主要面向的使用场景是:安防监控中多路摄像头视频流的实时目标检测与跟踪。同类可对比的替代方案包括 GStreamer、OpenCV、Apache Flink。

像搭积木一样拼出多进程视频分析流水线
Videoflow 是一个用 Python 编写的视频分析应用开发框架,核心目标是让开发者用搭积木的方式快速构建复杂的多进程视频处理流水线。它把视频处理拆解为生产者、消费者和处理器三类节点,节点之间通过队列传递数据,天然支持多进程并行,从而充分利用多核 CPU 提升吞吐。框架内置对对象检测、目标跟踪等常见任务的支持,也允许接入自定义模型或算法。开发者只需定义每个处理步骤的输入输出,就能把解码、推理、跟踪、后处理等环节串成一条可扩展的流水线,而不必自己处理进程调度、队列同步和背压问题。它适合需要实时或批量处理多路视频流的场景,例如安防监控、交通分析、零售客流统计等,能显著降低从原型到可运行系统的工程成本。
1检查运行环境
确认本机 Python 版本不低于 3.12,并已安装并启动 Docker;两者是 run-local 正常工作的前提。
python --version
docker info2安装 videoflow
从 PyPI 安装带全部可选依赖的版本,建议装进自己独立的虚拟环境,避免依赖冲突。
pip install -U 'videoflow[all]'3准备 NATS 服务器
没有 Docker 时需自己起一个 JetStream 服务;有 Docker 时可跳过,run-local 会自动拉起开发 broker。
nats-server -js4编写流水线脚本
在 build_flow() 里用生产者、处理器、消费者连成有向无环图,Flow 只列叶子消费者,生产者会自动发现。
cat > my_flow.py <<'EOF'
from videoflow.core import Flow
from videoflow.core.constants import BATCH
from videoflow.producers import IntProducer
from videoflow.processors import IdentityProcessor, JoinerProcessor
from videoflow.consumers import CommandlineConsumer
def build_flow():
producer = IntProducer(0, 40, 0.1, name='producer')
identity = IdentityProcessor(name='identity')(producer)
identity1 = IdentityProcessor(name='identity1')(identity)
joined = JoinerProcessor(name='joined')(identity, identity1)
printer = CommandlineConsumer(name='printer')(joined)
return Flow([printer], flow_type=BATCH)
if __name__ == '__main__':
from videoflow.engines.local import LocalProcessEngine
flow = build_flow()
flow.run(LocalProcessEngine())
flow.join()
EOF5本地运行流水线
run-local 会为每个节点拉起一个子进程,等待流程结束后报告非零退出的节点,并只清理它自己启动的容器。
videoflow run-local my_flow.py6直接运行脚本
如果已有可用的消息代理,可以直接执行脚本,不经过 run-local 的编排逻辑。
python my_flow.py7部署到 Kubernetes
在 k3s、kind、minikube 或 Docker Desktop 等开发集群上,一条命令编译图、构建镜像并渲染每个节点的工作负载。
videoflow deploy my_flow.py| 配置项 | 必填 | 说明 | 示例 |
|---|---|---|---|
config.template.yaml | 否 | 随解决方案提供,deploy 会按其中问题交互式生成 config.yaml | config.template.yaml |
--nats | 否 | 指定已有的 NATS 服务器地址,替代自动置备的开发 broker | --nats nats://127.0.0.1:4222 |
--blob-redis-url | 否 | 指定 blob 存储使用的 Redis 地址 | --blob-redis-url redis://127.0.0.1:6379 |
--require-profile | 否 | 要求某个通道达到指定保证等级,否则拒绝运行 | --require-profile producer=reliable_work |
--config | 否 | 直接指定运行使用的配置文件,跳过交互式生成 | --config config.yaml |
run-local 输出中每个节点各有一个工作子进程启动,命令行消费者正常打印数据,流程结束后没有节点以非零状态退出。
Q:必须安装 Docker 吗?
A:不是必须。README 给出的替代方案是自行运行 nats-server -js 提供 JetStream;有 Docker 时 run-local 会自动帮你启动开发 broker。
Q:运行时连不上消息代理怎么办?
A:run-local 默认会启动开发用的 broker;如果已有服务器,用 --nats 指定地址,或先单独启动 nats-server -js。
Q:Flow 里为什么要只列消费者节点?
A:生产者会从消费者出发自动发现,即从叶子节点反向遍历整张图,所以只需把 CommandlineConsumer 这类终端节点传给 Flow。
Q:本地跑通后怎么上 Kubernetes?
A:同一份 build_flow() 工厂无需改代码,执行 videoflow deploy my_flow.py,即可在 k3s、kind、minikube 或 Docker Desktop 上部署。
Q:节点名重复会怎样?
A:每个节点由稳定且唯一的 name 标识,重名会导致节点无法区分,务必为每个节点设置不同的名字。
GStreamer、OpenCV、Apache Flink
videoflow 是计算机视觉领域的开源项目,由 videoflow 开发,2019 年首次发布。
在全站 13,090 个收录项目中,它的 GitHub 星标数(1,039)位列前 30%,在计算机视觉分类中处于中上游。
项目目前处于活跃维护状态,最近一次代码更新于 2026-09-21。开源免费,基于MIT许可证。
它主要面向的使用场景是:安防监控中多路摄像头视频流的实时目标检测与跟踪。同类可对比的替代方案包括 GStreamer、OpenCV、Apache Flink。
上一篇:cosmo-edge
下一篇:没有了!
modlens
开源
给纯文本编码代理装上眼睛,粘贴图片即刻获得结构化视觉证据。
The first vision plugin for DeepSeek Harness, and the vision bridge for every text-o···
opencv
开源
开箱即用的视觉算法库,搞定图像视频处理与识别
Open Source Computer Vision Library
OpenCVTutorials
开源
中文 OpenCV 教程,从入门到实战,边看边跑代码
OpenCV-Python4.1 中文文档
DEIMv2
开源
用DINOv3做实时检测,又快又准,直接落地。
[DEIMv2] Real Time Object Detection Meets DINOv3