Skip to content

Instantly share code, notes, and snippets.

@ruman
Last active January 27, 2021 04:36
Show Gist options
  • Save ruman/f7d73a4336869091adeef7d0079acaa0 to your computer and use it in GitHub Desktop.
Save ruman/f7d73a4336869091adeef7d0079acaa0 to your computer and use it in GitHub Desktop.
VideoJS with resume functionality ( Modified from https://github.com/embedly/player.js/blob/gh-pages/scripts/resume.js for videoJS player )
/*global jQuery:true, videojs:true */
(function($, document, window){
// Wrap localStorage.
var storage = {
_get: function(){
var data = JSON.parse(window.localStorage.getItem('resume'));
return data ? data : {};
},
_set: function(data){
window.localStorage.setItem('resume', JSON.stringify(data));
},
get: function(url){
var data = storage._get();
return data[url];
},
set: function(url, seconds){
var data = storage._get();
data[url] = seconds;
return storage._set(data);
},
remove: function(url){
var data = storage._get();
delete data[url];
return storage._set(data);
},
clear: function(){
localStorage.removeItem('resume');
},
isValid: function(){
var uid = new Date(),
result;
try {
window.localStorage.setItem(uid, uid);
result = window.localStorage.getItem(uid) === uid;
window.localStorage.removeItem(uid);
return result;
} catch(e) {}
return false;
}
};
// Deal with embedding the video.
$(document).on('ready', function(){
if (!storage.isValid){
window.alert('This demo requires localStorage. Your browser currently does not support the SPEC.');
}
$('.video').each(function(videoIndex){
var playerID = $(this).attr('id');
if(playerID){
console.log(playerID);
var player = videojs(playerID);
var currentTime = storage.get(playerID);
if(currentTime){
// console.log(currentTime)
player.currentTime(currentTime)
$(this).addClass('vjs-has-started')
}
/*
Stop all other players when start any audio
*/
player.on('play', function(){
$(".video").each(function (index) {
if (videoIndex !== index) {
this.player.pause();
}
});
});
// console.log(player);
player.on('timeupdate', function(){
// console.log(this.currentTime());
storage.set(playerID, this.currentTime());
});
player.on('ended', function(){
storage.remove(playerID)
})
}
});
});
})(jQuery, document, window);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment