diff --git a/source/Ox.UI/Ox.UI.js b/source/Ox.UI/Ox.UI.js index b9a941d6..3b3bd754 100644 --- a/source/Ox.UI/Ox.UI.js +++ b/source/Ox.UI/Ox.UI.js @@ -371,40 +371,6 @@ Ox.load.UI = function(options, callback) { } }); /*@ - Ox.UI.getVideoFormat Get supported video formats - (formats) -> of supported formats - formats list of available formats - @*/ - Ox.UI.getVideoFormat = function(formats) { - var aliases = { - 'mp4': 'h264', - 'm4v': 'h264', - 'ogv': 'ogg' - }, - format, - 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'); - Ox.forEach(formats, function(f) { - var alias = aliases[f] || f; - 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) - )) { - format = f; - return false; // break - } - } - }); - return format; - }; - /*@ Ox.UI.hideLoadingScreen hide loading screen () -> hide loading screen @*/ diff --git a/source/Ox/js/Video.js b/source/Ox/js/Video.js new file mode 100644 index 00000000..dd1e9a72 --- /dev/null +++ b/source/Ox/js/Video.js @@ -0,0 +1,61 @@ +'use strict'; + +/*@ +Ox.getVideoFormat Get supported video formats + (formats) -> of supported formats + formats list of available formats +@*/ +Ox.getVideoFormat = function(formats) { + var aliases = { + 'mp4': 'h264', + 'm4v': 'h264', + 'ogv': 'ogg' + }, + format, + 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'); + Ox.forEach(formats, function(f) { + var alias = aliases[f] || f; + 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) + )) { + format = f; + return false; // break + } + } + }); + return format; +}; + + +/*@ +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 = ''; + callback(info); + video = null; + }); + video.preload = 'metadata'; + video.src = url; +}, { + maxThreads: 4 +});