You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
128 lines
3.4 KiB
128 lines
3.4 KiB
(function () {
|
|
var config = {
|
|
selectors: {
|
|
btnFreeze: '#btnCapture',
|
|
btnUnFreeze: '#btnClean',
|
|
btnSave: '#btnSave',
|
|
btnAuto: '#btnAuto',
|
|
btnStop: '#btnStop',
|
|
camera: '#chamilo-camera',
|
|
results: '#upload_results'
|
|
},
|
|
urlReceiver: '',
|
|
video: {
|
|
fps: 1000,
|
|
maxClip: 25
|
|
},
|
|
callbacks: {
|
|
save: null,
|
|
auto: null
|
|
}
|
|
};
|
|
|
|
function snap() {
|
|
var deferred = $.Deferred();
|
|
|
|
Webcam.snap(function (dataUri) {
|
|
Webcam.upload(dataUri, config.urlReceiver, function (code, response) {
|
|
$(config.selectors.results).html(
|
|
'<h3>' + response + '</h3>'
|
|
+ '<div>'
|
|
+ '<img src="' + dataUri + '" class="webcamclip_bg">'
|
|
+ '</div>'
|
|
);
|
|
|
|
deferred.resolve();
|
|
});
|
|
});
|
|
|
|
return deferred.promise();
|
|
};
|
|
|
|
var videoInterval = 0,
|
|
videoDeferred = $.Deferred();
|
|
|
|
function startVideo() {
|
|
var counter = 0;
|
|
|
|
videoDeferred = $.Deferred();
|
|
videoInterval = window.setInterval(function () {
|
|
counter++;
|
|
|
|
if (config.video.maxClip >= counter) {
|
|
snap();
|
|
} else {
|
|
stopVideo();
|
|
}
|
|
}, config.video.fps);
|
|
|
|
return videoDeferred.promise();
|
|
}
|
|
|
|
function stopVideo() {
|
|
if (!videoInterval) {
|
|
return;
|
|
}
|
|
|
|
window.clearTimeout(videoInterval);
|
|
videoDeferred.resolve();
|
|
}
|
|
|
|
window.RecordWebcam = {
|
|
init: function (params) {
|
|
config = $.extend(true, config, params);
|
|
|
|
$(document).ready(function () {
|
|
Webcam.set({
|
|
width: 320,
|
|
height: 240,
|
|
image_format: 'jpeg',
|
|
jpeg_quality: 90
|
|
});
|
|
Webcam.attach(config.selectors.camera);
|
|
|
|
$('video').addClass('skip');
|
|
|
|
$(config.selectors.btnFreeze).on('click', function (e) {
|
|
e.preventDefault();
|
|
|
|
Webcam.freeze();
|
|
});
|
|
|
|
$(config.selectors.btnUnFreeze).on('click', function (e) {
|
|
e.preventDefault();
|
|
|
|
Webcam.unfreeze();
|
|
});
|
|
|
|
$(config.selectors.btnSave).on('click', function (e) {
|
|
e.preventDefault();
|
|
|
|
snap()
|
|
.always(function () {
|
|
if (config.callbacks.save) {
|
|
config.callbacks.save.apply(null, []);
|
|
}
|
|
});
|
|
});
|
|
|
|
$(config.selectors.btnAuto).on('click', function (e) {
|
|
e.preventDefault();
|
|
|
|
startVideo()
|
|
.always(function () {
|
|
if (config.callbacks.auto) {
|
|
config.callbacks.auto.apply(null, []);
|
|
}
|
|
});
|
|
});
|
|
|
|
$(config.selectors.btnStop).on('click', function (e) {
|
|
e.preventDefault();
|
|
|
|
stopVideo();
|
|
});
|
|
})
|
|
}
|
|
};
|
|
})(); |