Video streaming, like Netflix

hunchboard

Upload, transcode into many qualities, push to a CDN and adapt to the network. Why almost all the traffic never reaches your servers.

Comments

    What is on this board

    Parts

    • Player Web app
    • Studio Admin / operator
    • Edge servers CDN
    • Catalog and playback Service
    • Catalog Document DB · Cassandra
    • Upload Service
    • Originals Object storage · S3
    • Encode jobs Message queue · SQS
    • Transcoding Media processor · FFmpeg
    • Encoded chunks Object storage · S3
    • Recommendations ML model
    • What people watch Event stream · Kafka
    • Licenses Service

    How they connect

    • Studio → Upload: uploads a film
    • Upload → Originals: save
    • Upload → Encode jobs: encode
    • Encode jobs → Transcoding: consume
    • Transcoding → Encoded chunks: chunks
    • Encoded chunks → Edge servers: pre-load at night
    • Player → Catalog and playback: what to watch?
    • Catalog and playback → Catalog: catalog
    • Catalog and playback → Recommendations: for this person
    • Player → Licenses: license
    • Player → Edge servers: next chunk
    • Player → What people watch: watched 12 minutes
    • What people watch → Recommendations: train

    Notes and decisions

    • Edge servers: Almost every byte comes from here
    • Transcoding: Many qualities, in 4-second chunks
    • Licenses: DRM keys per session
    • Adaptive bitrate: the player picks the quality of each chunk by its own measured speed. The server decides nothing.

    More like this