MPEG DASH - Media Streaming
Today DASH streams are being used industry wide in Live media (Twitch, Facebook Live, Youtube Live) and would be soon incorporated in static media delivery. We would try to go through most of the use cases we as a consumer or developer would need to utilize these or serve our very own livestream. MPEG DASH (Dynamic Adaptive Streaming over HTTP) is an ISO standard employing adaptive bitrate streaming technique which works by breaking the content into a sequence of small HTTP-based file segments. Each segment contains a short interval of playback time of content, served in several bitrates/codecs, where all of this information is enclosed in a XML media presentation description (MPD). Unlike conventional streaming protocols, this works with standard HTTP servers over TCP, and can fully utilize the benefits of HTTP/2 if both client and server supports it. Naturally, most CDN's and servers can serve the dynamic stream as segmented static media files, with one dynamic entry point which delivers the MPD serving the current time.
Due to lack of open libraries handling DASH media, we would be building a DASH utility toolkit. It would be carrying out activities of segmenting (generation), re-merging (consumption), and clipping out a specific period of clip, where the on-media tasks are carried out by ffmpeg. Special care will be taken for "dynamic" streams which are live streams. We will go through some production code behind https://esl.atx.sx which is specialized facebook streamer, and some challenges that came up serving its 1 million users.
- Conventional streaming media basics
- Media descriptors - codecs, timestamps
Arnav is currently working as a Senior Software Engineer at BrowserStack. He has presented technical talks at previous PyCons. He maintains several pet projects, his most recent https://esl.atx.sx serving the esports community. Having spent a decade behind the computer screen, he often gives valuable insight into Web Architecture, Network Infrastructure & Security and Hardware. When he is unable to find the most elegant and practical way to approach a solution, he is often found reading and outputting chunks of python code. He also takes out time and enjoys mentoring peers on good coding practices. Rest of the time he is deeply devoted leading his DotA team.