(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(
'
' + response + '
'
+ ''
+ '
'
+ '
'
);
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();
});
})
}
};
})();