> Requirements: Live streaming uses Apple’s HTTP Live Streaming (HLS) technology. HLS requires ..., or a PC with Microsoft Edge on Windows 10.
Interesting. They are limiting it to their own devices and software, except they allow Microsoft Edge. Is there a technical reason for this? Couldn't Chrome/Firefox work? Strange that they would give Edge an exception.
I think this is one of Apple's semi-standard protocols that just happens to be supported by Edge, not that Apple is "allowing" Microsoft's browser in any way.
Chrome supports its own streaming method, MPEG-DASH with H.264 which is what Youtube runs on where possible. Firefox stated it won't support H.264 on principle (although it does now, for WebRTC). Android supports HLS, as does iOS, out of the box. HLS was designed to supersede RTSP however we also have the equally-ubiquitous RTMP, which Flash supports natively. You can get an HLS stream via Flash with an add-on to some clients so now this will work on IE, Chrome Firefox, and there are also some custom, proprietary clients out there for h.264/HLS. It's not a pleasant ecosystem right now..
- Chrome (and other browsers) support MPEG-DASH via javascript through the Media Source Extensions (MSE) (which Safari actually supports[1])
- Firefox does not "bundle" H.264 (because of licensing) but has recently supported it where the OS provides it[2].
- HLS and MPEG-DASH are fairly similar in theory, but in practice HLS requires complete (with header/metadata) chunks whereas MPEG-DASH can "arbitrarily" chunk a video file and just feed into a MSE video stream. Both work with manifest files detailing different resolutions/qualities and chunk sizes + offsets.
Firefox supports H.264 via system codecs, and supports MPEG-DASH as of version 41 (currently beta, will be stable in a few weeks). MPEG-DASH is a more open standard, and has better support for adaptive bitrate streaming, so I think it's likely to become the defacto standard in the future. It's fairly new so isn't supported everywhere yet, but it's getting there, and seems to have a lot more industry support than other options.
and the code is better than I expected from a commercial project, it even uses may_alias properly. I wonder why the decoder doesn't support CPU multithreading, though? Slice threads are pretty simple to add.
Actually HLS is an IETF draft [1], but I'm not sure why Apple never followed through on making it a full standard because it's got a ton of clear advantages to traditional streaming technologies. I think it's more an issue of other browsers not supporting it, rather than Apple stopping them.
OK, this is one of things where you have to be very precise with the terminology. HLS does enforce the use of MPEG-2 Transport streams, but it does not force the use of the video encoding that is packaged in the stream. It is very typical (in fact it's the norm) to see HLS using H264 for the actual encoding work, and MPEG2 TS is actually a pretty decent specification for throwing around video streams.
I don't know that you can really say that DASH is more technologically neutral. I mean what are you saying, that HLS is not technology neutral because it forces you to use an MPEG specification, but if you opt to use an MPEG specification up-front, that's neutral?
Anyway, as someone that writes the client code for these things, I much prefer the HLS approach. If you go the DASH approach, you get into one of several potential messes. Either you have to say that you're only implementing one specific profile, in which case content providers complain that you're not supporting their chosen profile, or you have to write an absolutely massive client that can accept anything thrown at it.
Apple's affection for HLS stems from this same reasoning in my opinion. They too are more concerned about the client side - they want to keep the format simple for clients to handle, so that they don't have to bloat all of their code handling all of the different options. Because don't forget, the servers don't have to deal with this complexity - they choose which bits they want to use and go with it. Clients have to be able to handle everything in the spec correctly.
Interesting. They are limiting it to their own devices and software, except they allow Microsoft Edge. Is there a technical reason for this? Couldn't Chrome/Firefox work? Strange that they would give Edge an exception.