项目预览
项目数据
项目介绍
Star 增长趋势
本站每日记录该项目 GitHub 星标变化,观测越久曲线越完整
数据来源:GitHub API 逐日快照 · 收录于 2026-09-25 · 当前星标 ★ 1044
使用教程
环境要求
- Python 3.12 或更高版本
- Docker(用于 run-local 自动启动开发 NATS 容器)
- 运行时需要 NATS JetStream 服务器,run-local 会自动启动一个
- 可用的 pip 环境(从 PyPI 安装)
安装与启动步骤
-
1检查运行环境
确认本机 Python 版本不低于 3.12,并已安装并启动 Docker;两者是 run-local 正常工作的前提。
python --version docker info -
2安装 videoflow
从 PyPI 安装带全部可选依赖的版本,建议装进自己独立的虚拟环境,避免依赖冲突。
pip install -U 'videoflow[all]' -
3准备 NATS 服务器
没有 Docker 时需自己起一个 JetStream 服务;有 Docker 时可跳过,run-local 会自动拉起开发 broker。
nats-server -js -
4编写流水线脚本
在 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() EOF -
5本地运行流水线
run-local 会为每个节点拉起一个子进程,等待流程结束后报告非零退出的节点,并只清理它自己启动的容器。
videoflow run-local my_flow.py -
6直接运行脚本
如果已有可用的消息代理,可以直接执行脚本,不经过 run-local 的编排逻辑。
python my_flow.py -
7部署到 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 标识,重名会导致节点无法区分,务必为每个节点设置不同的名字。
注意事项
- Python 版本要求 3.12+,低版本无法安装。
- run-local 只停止它自己启动的容器;自建的开发存储会保留上次失败运行留下的数据(批处理流 TTL 为 24 小时)。
- 部署时若图旁存在 Dockerfile(或 gpu.Dockerfile)会被构建使用,否则使用对应版本的 videoflow 基础镜像,可用 --image 覆盖。
- 本地图文件可通过可重复的 --mount /abs/path[:ro] 暴露给 Pod,集群内数据用 --mount-pvc claim:/path[:ro] 挂载。
核心亮点
- 基于多进程和队列的节点式设计,能自动并行利用多核 CPU,提升视频处理吞吐
- 抽象出生产者/消费者/处理器三类节点,开发者只需关注算法逻辑,无需手写进程调度与同步
- 内置对目标检测、跟踪等常见视频分析任务的支持,并允许接入自定义模型,扩展性较好
不足之处
- 项目星标约一千,社区规模和生态相对较小,遇到冷门问题可参考的资料有限
- 文档以基础示例为主,复杂流水线的调试、性能调优和错误处理经验需要自行摸索
适用场景
- 安防监控中多路摄像头视频流的实时目标检测与跟踪
- 交通场景下对车流、人流进行批量视频分析与统计
- 零售门店利用视频流水线做客流计数和顾客行为分析
替代项目
GStreamer、OpenCV、Apache Flink
上一篇:cosmo-edge
下一篇:mahotas
同类项目推荐
galaxy-explorer
开源
浏览器里漫游程序化生成的银河系,无需后端和构建步骤
An interactive, procedurally-generated Milky Way galaxy in the browser — WebGL / th···
diffseg
开源
用扩散模型注意力,零标注自动分割图像
DiffSeg is an unsupervised zero-shot segmentation method using attention information···
awesome-3D-scene-graphs
开源
3D场景图论文与代码一站查,调研省时
Awesome 3D Scene Graphs: a curated list of 3D scene graph generation and related res···
sports
开源
用AI看懂体育比赛,一键提取球员位置和动作数据
computer vision and sports
ai4rs
开源
遥感图像目标检测与变化检测,开箱即用
AI for remote sensing, remote sense, object detection, oriented object detection, co···
cvkit
开源
轻量 C++ 工具,快速查看图像与 3D 模型
Computer Vision Toolkit. cvkit is available for Linux as well as for Windows. It off···
scene-language
开源
用程序+文字+嵌入,一句话生成可编辑的3D场景
(CVPR 2025 Highlight) The Scene Language: Representing Scenes with Programs, Words, ···
sparsefusion
开源
从稀疏视角生成高质量3D模型,重建新视角图像
[CVPR 2023] SparseFusion: Distilling View-conditioned Diffusion for 3D Reconstructio···
DriveLM
开源
用图问答让自动驾驶学会推理和解释
[ECCV 2024 Oral] DriveLM: Driving with Graph Visual Question Answering
