首页 > 解决方案 > 如何使用 OpenCV、Kafka 和 Docker 扩展来自多个摄像头的视频处理

问题描述

我们正在尝试扩展我们的实时视频处理系统以支持一百多个摄像机。该系统主要是用 Python 构建的。

我们正在使用 OpenCV 轮询 RTSP 摄像机流,并计划使用 Kafka Producer 交付它们。系统的这一部分称为Poller或 Stream Producer。

摄像机将使用 Web 界面进行配置,轮询器应接收任何摄像机的启动/停止消息以及其他详细信息,例如 RTSP 流 URL。这应使用 Celery 完成。对于每个启动请求,轮询器将为该相机创建一个新进程并使用cv2.VideoCapture().read(). 捕获的帧将被发送到带有相机 ID 和时间戳的 Kafka。

我们在 Docker 容器中运行所有组件,并打算水平扩展。

我们如何为大量(超过一百甚至更多)摄像头扩展 Poller,并有效地平衡多个 Poller 实例之间的摄像头流。有没有办法使用 CPU/内存指标来实现它,或者我们可以为 Docker 遵循的更标准的方法。

标签: dockerapache-kafkaceleryload-balancingscaling

解决方案


推荐阅读