Who want's to see some magic?
Pretty much only the first two.
Browser | Basic | Adaptive | AES | 608 | ID3 |
---|---|---|---|---|---|
Firefox for Desktop | - | - | - | - | - |
Chrome for Desktop | - | - | - | - | - |
Safari for Mac | 6+ | 6+ | 6+ | - | - |
Internet Explorer for Windows | - | - | - | - | - |
Opera for Desktop | - | - | - | - | - |
Safari for iOS | 5+ | 5+ | 5+ | 5+ | - |
Stock Browser for Android | 4.1+ 1 | 4.1+ 1 | 4.1+ 1 | - | - |
Chrome for Android | 30+ 1 | 30+ 1 | 30+ 1 | - | - |
Internet Explorer for Winphone | - | - | - | - | - |
Firefox for Android | - | - | - | - | - |
1. HLS is built into the Android OS since version 3. It has severe issues on Ice Cream Sandwich (4.0). Subsequent Android releases improved upon HLS, but even Lollipop (5.0) has issues with e.g. accurate seeking and updating of controls.
canPlayType(in DOMStringtype)
Mostly for HLS you will get maybe, which is not very reliable data
Specification extends HTMLMediaElement to allow JavaScript to generate media streams for playback. Allowing JavaScript to generate streams facilitates a variety of use cases like adaptive streaming and time shifting live streams. (http://w3c.github.io/media-source/)
var ms = new MediaSource();
var video = document.querySelector('video');
video.src = window.URL.createObjectURL(ms);
ms.addEventListener('sourceopen', function(e) {
//...
var sourceBuffer = ms.addSourceBuffer('video/webm; codecs="vorbis,vp8"');
sourceBuffer.appendBuffer(oneVideoWebMChunk);
//....
}, false);
<video
class="video-stream html5-main-video"
x-webkit-airplay="allow"
data-youtube-id="5yCGRy_dR30"
style="width: 640px; height: 360px; left: 0px; top: 0px; transform: none;"
src="blob:https%3A//www.youtube.com/ced8792d-6d88-4a75-bee5-56592ca676c3">
</video>
So what's the blob in the video elements source?
{
"readyState": "ended",
"duration": 276.108094,
"activeSourceBuffers": {
"0": {
"appendWindowEnd": null,
"appendWindowStart": 0,
"timestampOffset": 0,
"buffered": {
"length": 1
},
"updating": false,
"g": Uint8Array[..]
},
"1": [..]
,
"length": 2
},
"sourceBuffers": [..]
}