我正在使用 30 个 ESP32 AI Thinker 摄像头构建 DIY 家庭监控系统。为了加入和管理所有这些,我创建了一个 NodeJS 的 Web 应用程序 - 一个用于查看所有摄像头、添加/编辑/删除它们的仪表板。每个摄像头都是一个 ESP32 芯片,可传输 JPEG 视频(每 X 毫秒一次 jpeg 帧)。每个摄像机在家庭网络中都有自己的 IP 地址,这意味着每个摄像机都有一个简单的网络服务器来观看视频。但由于这是一个 ESP32 和一个简单的 Web 服务器 - 不能有 2 个或更多到 Web 服务器的连接。假设我有一个连接到流媒体的浏览器选项卡,当我复制该选项卡时,加载需要无尽的时间,并且在我关闭第一个选项卡后 - 第二个选项卡显示视频。摄像头仪表板应该能够显示多个连接,但是由于 ESP32 Web 连接的问题,我决定在 python 或 nodejs 上制作某种类型的重新流媒体,它将从所有摄像头“读取”(因此每个摄像头将有 1连接)并重新流式传输到多个连接。
再次,ESP32 摄像头进行流传输,转发器读取每个摄像头并进行转发,仪表板从转发器读取数据
仪表板已准备就绪 - 这只是一个带有附加服务的普通 CRUD - 观看摄像头
ESP32 已准备就绪。
还剩下写那个重播器,我花了大约一周的时间来找到解决方案。问题是我尝试过的任何方法都无法读取 JPEG 流。是的,这是 JPEG 流,而不是 RTSP 或 HSP 协议。当我卷曲摄像机的 IP 时,我看到内容类型 image/jpeg。
有人可以告诉我如何读取和重新翻译 JPEG 流,以便我可以在仪表板中显示它吗? FFmpeg 没有帮助
也许这会有所帮助。它是一个代理 MJPEG 流的 Node.js 脚本。 https://github.com/legege/node-mjpeg-proxy/blob/master/mjpeg-proxy.js