cleanup getVideoFormat and getVideoInfo
This commit is contained in:
parent
b0f9558845
commit
564603a20e
1 changed files with 17 additions and 21 deletions
|
@ -2,46 +2,44 @@
|
|||
|
||||
/*@
|
||||
Ox.getVideoFormat <f> Get supported video formats
|
||||
(formats) -> <a> of supported formats
|
||||
formats <a> list of available formats
|
||||
(formats) -> <a> List of supported formats
|
||||
formats <a> List of potential formats
|
||||
@*/
|
||||
Ox.getVideoFormat = function(formats) {
|
||||
var aliases = {
|
||||
'mp4': 'h264',
|
||||
'm4v': 'h264',
|
||||
'ogv': 'ogg'
|
||||
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"'
|
||||
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', ''))) {
|
||||
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)
|
||||
)) {
|
||||
format = f;
|
||||
videoFormat = format;
|
||||
return false; // break
|
||||
}
|
||||
}
|
||||
});
|
||||
return format;
|
||||
return videoFormat;
|
||||
};
|
||||
|
||||
|
||||
/*@
|
||||
Ox.getVideoInfo <f>
|
||||
url <s> video url
|
||||
callback <f> 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) {
|
||||
|
@ -51,11 +49,9 @@ Ox.getVideoInfo = Ox.queue(function(url, callback) {
|
|||
height: this.videoHeight,
|
||||
};
|
||||
this.src = '';
|
||||
callback(info);
|
||||
video = null;
|
||||
callback(info);
|
||||
});
|
||||
video.preload = 'metadata';
|
||||
video.src = url;
|
||||
}, {
|
||||
maxThreads: 4
|
||||
});
|
||||
}, 4);
|
||||
|
|
Loading…
Reference in a new issue