'use strict'; /*@ Ox.getVideoFormat Get supported video format (formats) -> List of supported formats format First supported format form list @*/ Ox.getVideoFormat = function(formats) { var aliases = { mp4: 'h264', m4v: 'h264', ogv: 'ogg' }, tests = { h264: 'video/mp4; codecs="avc1.42E01E, mp4a.40.2"', ogg: 'video/ogg; codecs="theora, vorbis"', webm: 'video/webm; codecs="vp8, vorbis"' }, userAgent = navigator.userAgent.toLowerCase(), video = document.createElement('video'), videoFormat; Ox.forEach(formats, function(format) { var alias = aliases[format] || format; if (video.canPlayType && video.canPlayType(tests[alias]).replace('no', '')) { // disable WebM on Safari/Perian, seeking does not work if (!( alias == 'webm' && /safari/.test(userAgent) && !/chrome/.test(userAgent) && !/linux/.test(userAgent) )) { videoFormat = format; return false; // break } } }); return videoFormat; }; /*@ Ox.getVideoInfo url video url callback gets called with object containing duration, width, height @*/ Ox.getVideoInfo = Ox.queue(function(url, callback) { var video = document.createElement('video'); video.addEventListener('loadedmetadata', function(event) { var info = { duration: this.duration, widht: this.videoWidth, height: this.videoHeight, }; this.src = ''; video = null; callback(info); }); video.preload = 'metadata'; video.src = url; }, 4);