AI-driven autonomous camera switching and live production direction — Hackathon MVP
A monorepo project that closes the loop from mobile camera capture → backend signaling → director console preview, built on a four-layer architecture:
- Capture — Browser
getUserMediacamera acquisition - Platform — FastAPI WebSocket signaling + SQLite persistence
- AI & Direction — Simulated AI director with 2.5s debounce switching
- Production — Next.js multiview operator console
/
├── packages/
│ ├── frontend/ # Next.js 14 director console + camera page
│ │ └── app/
│ │ ├── camera/ # Camera capture page (?role=camera)
│ │ └── director/ # Director console (?role=director)
│ ├── backend/ # FastAPI signaling + API + SQLite
│ │ └── app/
│ │ ├── api/ # REST routes
│ │ ├── models/ # SQLAlchemy ORM models
│ │ ├── services/ # Director rule engine
│ │ └── websocket/ # Connection manager
│ └── ai-service/ # Inference service (MVP placeholder)
│ └── src/
├── docker-compose.yml
└── README.md
- Node.js >= 18
- pnpm (
npm install -g pnpm) or npm - Python >= 3.10
- Poetry (
pip install poetry)
cd packages/backend
poetry install
poetry run uvicorn app.main:app --reload --port 8000Backend runs at http://localhost:8000
# From project root
cd packages/frontend
npm install
npx next dev --port 3000Frontend runs at http://localhost:3000
cd packages/ai-service
pip install -r requirements.txt
python -m src.mainAI service runs at http://localhost:8001
docker-compose up -d| Page | URL | Description |
|---|---|---|
| Home | http://localhost:3000 |
Role selection + room ID input |
| Camera Feed | http://localhost:3000/camera?room_id=xxx |
Camera capture with getUserMedia |
| Director Console | http://localhost:3000/director?room_id=xxx |
Multiview switching panel |
- Open the home page, enter a room ID (e.g.,
room1) - Click "Join as Camera" → Allow camera permissions → Enter a camera label (e.g., "Speaker") → Click Connect
- Open a new tab, enter the same room ID, click "Join as Director"
- The director console shows a multiview grid (MVP phase uses simulated feeds)
- Click "Manual Switch" to cycle through camera feeds
- Toggle "AI Auto Mode" — the program feed auto-switches every 2.5 seconds
Camera (Capture) → WebSocket (Platform) → Director Engine (AI) → Operator Console (Production)
Core Infrastructure— Production-ready core infrastructure codeMVP Placeholder— Placeholder implementation, to be replaced in future iterations
| Table | Description |
|---|---|
session |
Production rooms / sessions |
camera |
Camera devices registered in a session |
director_decision |
AI director decision history |
| Layer | Technology |
|---|---|
| Frontend | Next.js 14 + TypeScript + TailwindCSS |
| Backend | FastAPI + SQLAlchemy + SQLite |
| AI | Python 3.10+ (ONNX model interface reserved) |
| Real-time | WebSocket (signaling) + WebRTC (video) |
| Role | Name |
|---|---|
| Lead / Mastermind | Caeser |
| Team Member | N/A |
| Team Member | N/A |
Organization: FRAME-26
- Cross-camera person re-identification (Re-ID)
- Virtual PTZ cropping
- Physical PTZ control
- OBS auto-control integration
- ONNX model inference
- PostgreSQL migration
- Local recording / playback