3

I am new to media streaming, just started learning about adaptive streaming. I have few queries, please clarify -

  1. Does MSE support only DASH streaming, I mean if any website using DASH and my browser supports MSE with DASH, it will play. But if a website uses HLS, then my browser is not playing video content although it has MSE. Is it because MSE does not support HLS, or my browser MSE does not have implementation of HLS?

  2. If I inspect a webpage playing video stream, I checked many sites uses video tag with "src" attribute as blob. Does blob means it is using MSE. Can we have blob in "src" attribute for DASH(I checked in Youtube) and for HLS(as in dailymotion or twitch.tv) as well?

  3. I was reading few articles on twitch.tv, does twitch.tv only support HLS with html5 player or flash? If suppose a browser does not support flash and HLS through html5 player, then there is no way to play twitch.tv content on browser?

Thanks

2 Answers2

4

MediaSource Extensions (MSE) supports anything you can de-mux in JavaScript and send to the browser's native codecs. Browsers don't support DASH natively. Some browsers support HLS natively but most don't. It is possible to use both DASH and HLS in browsers that support MSE with the correct JavaScript library for handling each.

The blob you see could be a regular blob (an immutable chunk of binary), but more than likely it's coming from MSE.

I can't speak to what Twitch does internally.

Brad
  • 159,648
  • 54
  • 349
  • 530
  • 1
    I don't know why you were down voted. This answer is fine. I'll up-vote to offset. – szatmary Nov 30 '16 at 18:30
  • @szatmary I appreciate that, but there's no need. Someone downvoted yours too? :-/ I really don't get Stack Overflow sometimes. – Brad Nov 30 '16 at 18:32
3

Your questions don't really make sense as they are asked, so I can't answer the 1,2,3. But I can clear up some of your confusion. HLS and DASH are a collection of technologies, not single competing technologies. Most HTTPS streaming protocols are made up of a binary video format, and a text based manifest format. DASH uses an overly complex XML manifest format with a fragmented MP4 video format. HLS uses an m3u8 manifest, with fragmented Transport stream for the video format. As of IOS 10 HLS also supports fragmented MP4. MSE can play fragmented MP4. But browsers don't read manifests. Hence a player application must be used to download and parse the manifest, download the video fragments, then give them to the browser to play. Twitch uses HLS with transport streams, but runs custom software in the browser to convert them to MP4 fragments. (Or flv streams in the case of flash). When you see a src with a blob, that is a normal (not fragmented) MP4, and is completely different. Safari is an exception, it can play HLS using an m3u8 manifest as the source.

szatmary
  • 29,969
  • 8
  • 44
  • 57
  • 1
    Thanks szatmary for clarifying my doubts.. just one more thing I want to know.. I was inspecting twitch.tv on chrome and found it recieving video packets with content type - for HLS. which showing it is using HLS for playing video, and I also saw its using blob as src. How can I know, wether this browser using MSE or not. I mean how is crome playing twitch.tv, is it using MSE for MP4 fragments converted by twitch custom software.. I am totally new to these terms and technology.. so may be my questions are little vague. – user3704565 Nov 30 '16 at 09:15
  • The blob is something else, it's not the video. Twitch downloads .ts files. The ts files are converted to MP4 via JavaScript, then added to the media source buffer. – szatmary Nov 30 '16 at 16:29
  • Thanks szatmary and Brad for responding.. I think now I am clear.. just one more thing.. conversion of .ts file to mp4 .. is done by twitch or it is browser who does this conversion.. I am asking this because I saw some browser is unable to run twitch because they donot support HLS, althought MSE is there and youtube is working. – user3704565 Dec 01 '16 at 05:20