44 lines
1.2 KiB
JavaScript
44 lines
1.2 KiB
JavaScript
var tool = {}
|
|
tool.getVideoImage = function (path, secs, callback) {
|
|
var me = this, video = document.createElement('video');
|
|
var backCalled = false
|
|
var finish = function(err,data){
|
|
if(!backCalled){
|
|
backCalled = true
|
|
callback(err,data)
|
|
clearTimeout(timeout)
|
|
}
|
|
}
|
|
var timeout = setTimeout(function(){
|
|
finish(new Error('Failed Getting Snap from Video'))
|
|
},5000)
|
|
video.onloadedmetadata = function() {
|
|
video.play()
|
|
this.currentTime = Math.min(Math.max(0, (secs < 0 ? this.duration : 0) + secs), this.duration)
|
|
video.pause()
|
|
};
|
|
video.onseeked = function(e) {
|
|
var canvas = document.createElement('canvas')
|
|
canvas.height = video.videoHeight
|
|
canvas.width = video.videoWidth
|
|
var ctx = canvas.getContext('2d')
|
|
ctx.drawImage(video, 0, 0, canvas.width, canvas.height)
|
|
var base64 = canvas.toDataURL()
|
|
finish(null, base64)
|
|
delete(ctx)
|
|
delete(video)
|
|
delete(canvas)
|
|
};
|
|
video.onerror = function(e) {
|
|
finish(e)
|
|
};
|
|
video.src = path;
|
|
}
|
|
tool.checkCorrectPathEnding = function(x){
|
|
var length=x.length
|
|
if(x.charAt(length-1)!=='/'){
|
|
x=x+'/'
|
|
}
|
|
return x
|
|
}
|