123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- /*!
- {
- "name": "HTML5 Video",
- "property": "video",
- "caniuse": "video",
- "tags": ["html5"],
- "knownBugs": ["Without QuickTime, `Modernizr.video.h264` will be `undefined`; https://github.com/Modernizr/Modernizr/issues/546"],
- "polyfills": [
- "html5media",
- "mediaelementjs",
- "sublimevideo",
- "videojs",
- "leanbackplayer",
- "videoforeverybody"
- ]
- }
- !*/
- /* DOC
- Detects support for the video element, as well as testing what types of content it supports.
- Subproperties are provided to describe support for `ogg`, `h264` and `webm` formats, e.g.:
- ```javascript
- Modernizr.video // true
- Modernizr.video.ogg // 'probably'
- ```
- */
- define(['Modernizr', 'createElement'], function(Modernizr, createElement) {
- // Codec values from : github.com/NielsLeenheer/html5test/blob/9106a8/index.html#L845
- // thx to NielsLeenheer and zcorpan
- // Note: in some older browsers, "no" was a return value instead of empty string.
- // It was live in FF3.5.0 and 3.5.1, but fixed in 3.5.2
- // It was also live in Safari 4.0.0 - 4.0.4, but fixed in 4.0.5
- Modernizr.addTest('video', function() {
- var elem = createElement('video');
- var bool = false;
- // IE9 Running on Windows Server SKU can cause an exception to be thrown, bug #224
- try {
- bool = !!elem.canPlayType;
- if (bool) {
- bool = new Boolean(bool);
- bool.ogg = elem.canPlayType('video/ogg; codecs="theora"').replace(/^no$/, '');
- // Without QuickTime, this value will be `undefined`. github.com/Modernizr/Modernizr/issues/546
- bool.h264 = elem.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/, '');
- bool.webm = elem.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/, '');
- bool.vp9 = elem.canPlayType('video/webm; codecs="vp9"').replace(/^no$/, '');
- bool.hls = elem.canPlayType('application/x-mpegURL; codecs="avc1.42E01E"').replace(/^no$/, '');
- }
- } catch (e) {}
- return bool;
- });
- });
|