How lekhanj/netflix-streaming works
This is an event-driven video platform: an admin uploads raw video, asynchronous services encode HLS renditions and update catalog readiness, then clients obtain signed playback access. The README documents six qualities, catalog search/filtering, Redis caching, and playlist rewriting. Sampled source confirms upload, encoding, catalog operations, and streaming URL generation; consumer wiring and some deployment integrations rely on the README and tree, so omitted arrows indicate unverified implementation details.
Main entry points: EncodingService.java HLS Encoder · StreamingService.java Streaming Service · StreamingController.java Streaming API · VideoService.java Upload Service
Components 18
Video Ingest
- Upload API
video-service/src/main/java/com/netflix/videoservice/controller/VideoController.java - Upload Service
video-service/src/main/java/com/netflix/videoservice/service/VideoService.java
Encoding Pipeline
- Upload Consumer
encoding-service/src/main/java/com/netflix/encodingservice/service/VideoUploadedEventConsumer.java - HLS Encoder
encoding-service/src/main/java/com/netflix/encodingservice/service/EncodingService.java
Movie Catalog
- Catalog API
content-service/src/main/java/com/netflix/contentservice/controller/ContentController.java - Catalog Service
content-service/src/main/java/com/netflix/contentservice/service/ContentService.java - Movie Repository
content-service/src/main/java/com/netflix/contentservice/repository/MovieRepository.java - Video Event Consumer
content-service/src/main/java/com/netflix/contentservice/service/VideoUploadedEncodedEventConsumer.java
Stream Delivery
- Streaming API
streaming-service/src/main/java/com/netflix/streamingservice/controller/StreamingController.java - Streaming Service
streaming-service/src/main/java/com/netflix/streamingservice/service/StreamingService.java - Encoded Event Consumer
streaming-service/src/main/java/com/netflix/streamingservice/service/VideoEncodedEventConsumer.java
Other components
- Admin / Client
- AWS S3
- Kafka Topics
- FFmpeg
- HLS Objects
- Movie Database
- Redis Cache
Connections 25
- Admin / Client → Upload API: uploads video
- Upload API → Upload Service: calls
- Upload Service → AWS S3: stores raw video
- Upload Service → Kafka Topics: publishes uploaded event
- Kafka Topics → Upload Consumer: dispatches upload event
- Upload Consumer → HLS Encoder: starts encoding
- HLS Encoder → AWS S3: downloads source
- HLS Encoder → FFmpeg: runs HLS encoding
- HLS Encoder → HLS Objects: uploads renditions
- HLS Encoder → Kafka Topics: publishes encoded event
- Kafka Topics → Video Event Consumer: dispatches video events
- Video Event Consumer → Catalog Service: updates lifecycle
- Catalog API → Catalog Service: calls
- Catalog Service → Movie Repository: reads and writes
- Movie Repository → Movie Database: persists movies
- Admin / Client → Catalog API: manages catalog
- Admin / Client → Streaming API: requests playback
- Streaming API → Redis Cache: reads playlist key
- Streaming API → Streaming Service: requests signed access
- Streaming Service → Redis Cache: reads and caches URLs
- Streaming Service → HLS Objects: reads playlists
- Streaming Service → HLS Objects: presigns object access
- Kafka Topics → Encoded Event Consumer: dispatches encoded event
- Encoded Event Consumer → Redis Cache: stores playlist key
- Streaming Service → Streaming API: returns signed response