How rohan003pro-netizen/neurostream works
NeuroStream is an adaptive video-streaming demo: a client reports network telemetry, the backend can use a five-sample LSTM prediction or measured bandwidth to select a rendition, then pushes initialization data and video chunks. Video processing creates the multi-resolution assets, while the separate training script produces the model and scaler loaded by the server. The README is empty and the frontend HTML was not sampled, so its wiring to the backend is not shown; the client connections below reflect the backend’s WebSocket contract.
Main entry points: server.py WebSocket server · neurostream_lstm.keras LSTM model · scaler.pkl Feature scaler · train.py Model training
Components 11
Client interface
- Frontend
NeuroStream/frontend/index.html
Streaming backend
- WebSocket server
NeuroStream/backend/server.py - Telemetry window
NeuroStream/backend/server.py - Resolution selection
NeuroStream/backend/server.py - Chunk transport
NeuroStream/backend/server.py
Prediction model
- Model training
NeuroStream/ml/train.py - LSTM model
NeuroStream/backend/models/neurostream_lstm.keras - Feature scaler
NeuroStream/backend/models/scaler.pkl
Video assets
- Video processing
NeuroStream/videos/process_video.py - Rendition segments
NeuroStream/videos/demo
Other components
- Viewer
Connections 13
- Viewer → WebSocket server: sends telemetry
- WebSocket server → Telemetry window: buffers samples
- WebSocket server → Feature scaler: loads scaler
- WebSocket server → LSTM model: loads model
- Telemetry window → Feature scaler: scales window
- Telemetry window → LSTM model: predicts bandwidth
- WebSocket server → Resolution selection: passes mode and state
- Resolution selection → Chunk transport: selects rendition
- Chunk transport → Rendition segments: reads segments
- WebSocket server → Viewer: streams chunks
- Model training → LSTM model: saves trained model
- Model training → Feature scaler: saves scaler
- Video processing → Rendition segments: generates segments