Video streaming Basic background - sequence of frame sizes: f_i - variable frame sizes due to detail, motion, etc. - playout buffer: buffer space b at client - playout delay: wait d seconds to start playing - rebuffering: empty playout buffer - video quality: high frame quality, low quality variation, limited rebuffering Problems with TCP - retransmission of lost packets not useful after playout time - slowing down after a packet loss may starve the client - overhead of TCP header and ACK packets, particularly for audio streams - cannot easily cancel an ongoing download to switch to a lower level - cannot easily count data in receive buffer, or retract data from send buffer Adaptive bit rate selection - multiple encoding rates (from 235 Kbps to 5 Mbps) - client requests each chunk at a particular level - balance tradeoff between video quality and likelihood of rebuffering - estimate future bandwidth from past observations, but be more conservative when buffer is low Netflix video streaming paper - capacity estimation is too hard, due to variability - sources of variability: WiFi interference, network congestion, overloaded server - better to use the buffer occupancy (once the buffer has built up) - cannot cancel transfer, so keep buffer above a reservoir (at least one chunk, but perhaps more because of variable chunk sizes) - video rate vs. buffer occupancy: flat for reservoir, linear increase, flat for upper Dynamic Adaptive Streaming over HTTP (DASH) - break content into small HTTP file segments - content made available at many bit rates - client requests a chunk at the appropriate rate - media presentation description gives segment info, URL, media characteristics -- could be a segment list, a template with time or chunk number, or one URL with byte range Netflix measurement paper - infrastructure * Netflix data centers (www.netflix.com) - redirect users to movies.netflix.com or to registration (payment info) - not involved in video streaming * Cloud (e.g., Amazon) - content ingestion - log recording/analysis - DRM - CDN routing - user sign-in - mobile device support * CDNs - Akamai, Limelight, and Level3 * Players - desktop: Silverlight - mobile phones: various apps - Dynamic adaptive streaming over HTTP (DASH) - Manifest file * list of CDNs * chunk URLs for multiple quality levels - Trickplay * thumbnail images for periodic (10-second) snapshots Sprout paper - highly variable throughput and RTT in cellular networks - bad for interactive apps - existing schemes are reactive (to packet loss and RTT increase) - infer link speed from interarrivel times, and predict future speed