feat: switch live preview from WebSocket to MJPEG streaming

- Pipeline writes JPEG to /tmp/feedmill_preview_{job_id}.jpg (atomic)
- Flask serves MJPEG stream at /api/preview/{job_id}
- Frontend uses native <img src> MJPEG — zero JS needed
- Removed flask-socketio, eventlet, socket.io CDN dependencies
- 33% less bandwidth per frame, native browser decode
- Same proven approach as original karung-counting project
This commit is contained in:
jetson committed 2026-09-22 10:09:22 +07:00
1 parent 1e28eb49e2
commit a5566f3b99
8 files changed
+239 -100

No files matched your search

-1
View File
@@ -18,7 +18,6 @@ dependencies = [
[project.optional-dependencies]
dev = ["pytest"]
web = ["flask-socketio>=5.3.0", "eventlet>=0.33.0"]
[project.scripts]
recounter = "cli:main"