How fanqin314/image-scheduler-rs works
image-scheduler-rs is a local Rust image/video analysis service with a Web UI and an optional Chrome real-time video extension. The primary workflow uploads an image or video, extracts and evaluates visual features, then returns decisions and visualizations for display. Video uploads are decoded and screened for key frames before full analysis; the extension instead captures frames from playing videos and proxies them to the service. README capabilities guide the unsampled Web UI and extension links; sampled source supports the core analysis and proxy relationships. CLOUD/LOCAL are decisions, not demonstrated dispatches to compute services.
Main entry points: handlers.rs Request handlers · background.js Extension worker · content.js Video capture · main.rs Axum server
Components 18
Web interface
- Web UI
templates/index.html
Chrome extension
- Extension popup
realtime-extension/popup.js - Video capture
realtime-extension/content.js - Shadow DOM hook
realtime-extension/shadow-hook.js - Extension worker
realtime-extension/background.js - Analysis logs
HTTP service
- Axum server
src/main.rs - Request handlers
src/handlers.rs - API data types
src/types.rs
Image analysis
- Analysis settings
src/config.rs - Feature extraction
src/features.rs - Value evaluation
src/evaluator.rs - Image annotation
src/visualization.rs
Video analysis
- Video decoder
src/video.rs - Key-frame screening
src/handlers.rs
Other components
- User
- Native host
- Playing video
Connections 29
- User → Web UI: uploads image/video
- Web UI → Axum server: HTTP requests
- Axum server → Request handlers: routes requests
- Request handlers → Feature extraction: extracts features
- Feature extraction → Value evaluation: feature map
- Request handlers → Image annotation: requests annotation
- Request handlers → Video decoder: decodes video
- Video decoder → Key-frame screening: sampled frames
- Key-frame screening → Feature extraction: analyzes key frames
- Key-frame screening → Value evaluation: evaluates frames
- Request handlers → API data types: builds responses
- Request handlers → Web UI: returns results
- User → Extension popup: starts analysis
- Playing video → Video capture: provides frames
- Shadow DOM hook → Video capture: opens shadow roots
- Video capture → Extension worker: forwards captured frames
- Extension popup → Extension worker: sends commands
- Extension worker → Axum server: proxies frame requests
- Extension worker → Axum server: sets region
- Axum server → Request handlers: routes frame requests
- Request handlers → Video capture: returns frame results
- Video capture → Extension worker: saves analysis log
- Extension worker → Analysis logs: reads/writes logs
- Extension popup → Extension worker: manages saved logs
- Extension worker → Native host: starts backend
- Analysis settings → Feature extraction: supplies parameters
- Analysis settings → Value evaluation: supplies weights
- Analysis settings → Key-frame screening: supplies thresholds
- Analysis settings → Video decoder: supplies sampling limits