Notes: Zachary Ozer Pablo Jeroen David George Zaheer Ralph Ben Schwartz Edward Thomas Monty JB Chris
* Delay * Ease of deployment * Multiple resolutions * Multiple audio streams * Switch codecs * TCP / HTTP characteristics / metrics * Mirrors / server switching * Manifest and JS access * Changing set of streams via changing manifest * Maybe m3u, simple text
Ben: How does adaptive HTTP streaming work?
David: Big one is Apple HTTP streaming 3 MPEGTS -> HTTP streams. Divided up into individual files at keyframes and play it. Each is same dimensions, same framerate, different sizes. Audio stream has to be constant. Same audio packet between streams. Indexes (m3u) with duration. Appended. Header in each one - start anywhere.
Thomas: Less than 64kb.
Monty: How much is specifically technical?
* no special streaming server * Only download one chunk (bandwidth conservation) * client controls switching * Natural boundary for QOS controls Thomas: * good for statistics (log line)
* Gets around range requests issues
* Continuously append from server (ogg)
* Gambling / live sports (latency 0-2 ok, 30 not ok)
* trade off between requests and
* Manifest vs stream * Different for different formats
WebM and Theora?
* Live stream switching - how often do you switch bitrate? * How often does IP address change?
* How decide when to change?
* Akamai boosts you up and then drops you down
* Are all codecs streamable in this way?
* there's a problem with MKV
- Target average bitrate. Apple validates.
* Tons of files, with empty tracks * Container specific solutions
* Does it matter if keyframes overlap?
* Need overlap to do codec switching * Latency / idle / packet loss * You can do a lot of network statistics * larger files are better, but harder to switch / higher latency
* Can't assume all coming from the same server
* Last mile proble * Microsoft / Adobe have multicast solutions
* Using CDN as primitive multicasting
* Mirror list + track list * switch bandwidth * Control stream order * Provide
* Why implement it in JS?
* cross browser compatible * open to test against, well defined
* chunks, lengths only
* Stream piece and application piece * Compartmentalize and inextensible
* DRM extension
* Ignore extensions, base implementation
* Too complicated to change stream set
- What metrics?
- Dropped frames
- Estimated bandwidth
- control next frame, next chunk
- Audio API
- Easy to switch between video streams, hard to switch from video to ad