# HG changeset patch # User hurons # Date 1301310443 -7200 # Node ID 1bd9377aa5c8b37264d225d8f05f44e9755d9a19 # Parent a012517174aa00d1d604128f8b433bab60a48edc add "research box" and solve redmine ticket #1 & #2 diff -r a012517174aa -r 1bd9377aa5c8 src/js/LdtPlayer.js --- a/src/js/LdtPlayer.js Wed Mar 23 18:40:58 2011 +0100 +++ b/src/js/LdtPlayer.js Mon Mar 28 13:07:23 2011 +0200 @@ -2,7 +2,8 @@ * * Copyright 2010 Institut de recherche et d'innovation * contributor(s) : Samuel Huron - * + * Use Silvia Pfeiffer 's javascript mediafragment implementation + * * contact@iri.centrepompidou.fr * http://www.iri.centrepompidou.fr * @@ -323,11 +324,15 @@ __IriSP.createMyHtml = function(){ var width = __IriSP.config.gui.width; + var height = __IriSP.config.gui.height; // AUDIO */ // PB dans le html : ; if(__IriSP.config.gui.mode=="radio"){ __IriSP.jQuery( "
\n"+ + "
\n"+ + " \n"+ + "
\n"+ "
\n"+ " Get flash to see this player \n"+ "
\n"+ @@ -374,6 +379,11 @@ "
\n"+ " Get flash to see this player \n"+ "
\n"+ + "
\n"+ + " \n"+ + "
\n"+ + + "
\n"+ "
\n"+ " \n"+ @@ -580,6 +590,7 @@ __IriSP.trace("__IriSP.APIplayer.prototype.ready",time); if(__IriSP.MyApiPlayer.hashchangeUpdate==null){ __IriSP.MyApiPlayer.seek(time); + }else{ __IriSP.MyApiPlayer.hashchangeUpdate=null; } @@ -665,8 +676,10 @@ //window.location.href = shareURL+encodeURIComponent(MyURLNow); } __IriSP.APIplayer.prototype.seek = function (time){ + if(time==0){time=1} __IriSP.trace("__IriSP.APIplayer.prototype.seek",time); if(__IriSP.config.player.type=='jwplayer'){ + //__IriSP.MyApiPlayer.play() __IriSP.player.sendEvent('SEEK', time); } else if(__IriSP.config.player.type=='dailymotion' || __IriSP.config.player.type=='youtube') { @@ -675,17 +688,22 @@ this.changePageUrlOffset(time); } __IriSP.APIplayer.prototype.update = function (time){ + if(time!=0){ this.hashchangeUpdate = true; + __IriSP.trace("__IriSP.APIplayer.prototype.update",time); __IriSP.player.sendEvent('SEEK', time); + } } __IriSP.APIplayer.prototype.changePageUrlOffset = function (time) { //alert(time); __IriSP.trace("__IriSP.APIplayer.prototype.changePageUrlOffset","CHANGE URL "+time); + window.location.hash = "#t=" + time; window.location.href = window.location.href; + } -/* MEDIA FRAGMENT FUNCTION */ +/* MEDIA FRAGMENT FUNCTION by Silvia Pfeiffer */ __IriSP.jumpToTimeoffset = function (form) { var time = form.time.value; @@ -717,6 +735,7 @@ __IriSP.currentVolume = 50; __IriSP.player = null; __IriSP.startPosition = null; +__IriSP.firstplay = false; @@ -732,12 +751,15 @@ __IriSP.trace("__IriSP.createPlayer","start"); __IriSP.myUrlFragment = url.split(streamerPath); - __IriSP.config.player.flashvars.streamer = streamerPath; - __IriSP.config.player.flashvars.file = __IriSP.myUrlFragment[1]; - var flashvars = __IriSP.config.player.flashvars; - var params = __IriSP.config.player.params; - var attributes = __IriSP.config.player.attributes; + var configTemp = __IriSP.jQuery.extend(true, {}, __IriSP.config); + configTemp.player.flashvars.autostart = "true"; + configTemp.player.flashvars.streamer = streamerPath; + configTemp.player.flashvars.file = __IriSP.myUrlFragment[1]; + + var flashvars = configTemp.player.flashvars; + var params = configTemp.player.params; + var attributes = configTemp.player.attributes; __IriSP.trace( "__IriSP.createPlayer", @@ -763,6 +785,89 @@ // re execute if this swf call does'nt work } + +/* API JW PLAYER */ +__IriSP.playerReady = function (thePlayer) { + + //__IriSP.trace("__IriSP.playerReady","PLAYER READY !!!!!!!!!!!!"); + __IriSP.player = window.document[thePlayer.id]; + //__IriSP.trace("__IriSP.playerReady","API CALL "+__IriSP.player); + __IriSP.MyApiPlayer.ready(__IriSP.player); + //__IriSP.trace("__IriSP.playerReady","API CALL END "); + + var url = document.location.href; + var time = __IriSP.retrieveTimeFragment(url); + //__IriSP.trace("__IriSP.playerReady"," "+url+" "+time ); + __IriSP.startPosition = time; + //__IriSP.trace("__IriSP.playerReady"," LISTENER LAUCHER"); + __IriSP.addListeners(); + //__IriSP.trace("__IriSP.playerReady"," LISTENER END"); + +} +__IriSP.addListeners = function () { + if (__IriSP.player) { + __IriSP.trace("__IriSP.addListeners","ADD Listener "); + __IriSP.player.addModelListener("TIME", "__IriSP.positionListener"); + __IriSP.player.addControllerListener("VOLUME", "__IriSP.volumeListener"); + __IriSP.player.addModelListener('STATE', '__IriSP.stateMonitor'); + } else { + __IriSP.setTimeout("__IriSP.addListeners()",100); + } + + // et changer les boutons +} +__IriSP.stateMonitor = function (obj) { + + if(obj.newstate == 'PAUSED') + { + __IriSP.trace("__IriSP.stateMonitor","PAUSE"); + __IriSP.MyApiPlayer.changePageUrlOffset(__IriSP.currentPosition); + __IriSP.jQuery(".ui-icon-play").css("background-position","0px -160px"); + + } else if (obj.newstate == 'PLAYING'){ + + __IriSP.trace("__IriSP.stateMonitor","PLAYING "+__IriSP.startPosition ); + + // forcer le buffering mais stop du player si dans config + if (__IriSP.config.player.flashvars.autostart=="false" && __IriSP.firstplay==false && __IriSP.startPosition == 0){ + __IriSP.trace("__IriSP.stateMonitor","first stop ???"); + __IriSP.MyApiPlayer.play(); + __IriSP.firstplay = true; + __IriSP.MyLdt.checkTime(1); + } + + // une fois la video prete a lire la déplacer au bon timecode + if(__IriSP.startPosition!=null){ + __IriSP.MyApiPlayer.update(__IriSP.startPosition); + __IriSP.startPosition = null; + } + + + __IriSP.jQuery(".ui-icon-play").css("background-position","-16px -160px"); + } else if (obj.newstate == 'BUFFERING'){ + __IriSP.trace("__IriSP.stateMonitor","BUFFERING : "+__IriSP.config.player.flashvars.autostart); + //changePageUrlOffset(currentPosition); + } + +} +__IriSP.positionListener = function(obj) { + //__IriSP.trace("__IriSP.positionListener",obj.position); + __IriSP.currentPosition = obj.position; + var tmp = document.getElementById("posit"); + if (tmp) { tmp.innerHTML = "position: " + __IriSP.currentPosition; } + __IriSP.jQuery("#slider-range-min").slider("value", obj.position); + __IriSP.jQuery("#amount").val(obj.position+" s"); + // afficher annotation + __IriSP.MyLdt.checkTime(__IriSP.currentPosition); + +} +__IriSP.volumeListener = function (obj) { + __IriSP.currentVolume = obj.percentage; + var tmp = document.getElementById("vol"); + if (tmp) { tmp.innerHTML = "volume: " + __IriSP.currentVolume; } +} + + /* API DAILYMOTION */ onDailymotionPlayerReady = function (playerid){ @@ -876,78 +981,6 @@ } -/* API JW PLAYER */ -__IriSP.playerReady = function (thePlayer) { - - //__IriSP.trace("__IriSP.playerReady","PLAYER READY !!!!!!!!!!!!"); - __IriSP.player = window.document[thePlayer.id]; - //__IriSP.trace("__IriSP.playerReady","API CALL "+__IriSP.player); - __IriSP.MyApiPlayer.ready(__IriSP.player); - //__IriSP.trace("__IriSP.playerReady","API CALL END "); - - var url = document.location.href; - var time = __IriSP.retrieveTimeFragment(url); - //__IriSP.trace("__IriSP.playerReady"," "+url+" "+time ); - __IriSP.startPosition = time; - //__IriSP.trace("__IriSP.playerReady"," LISTENER LAUCHER"); - __IriSP.addListeners(); - //__IriSP.trace("__IriSP.playerReady"," LISTENER END"); - -} -__IriSP.addListeners = function () { - if (__IriSP.player) { - __IriSP.trace("__IriSP.addListeners","ADD Listener "); - __IriSP.player.addModelListener("TIME", "__IriSP.positionListener"); - __IriSP.player.addControllerListener("VOLUME", "__IriSP.volumeListener"); - __IriSP.player.addModelListener('STATE', '__IriSP.stateMonitor'); - } else { - __IriSP.setTimeout("__IriSP.addListeners()",100); - } - - // et changer les boutons -} -__IriSP.stateMonitor = function (obj) { - - - - if(obj.newstate == 'PAUSED') - { - __IriSP.trace("__IriSP.stateMonitor","PAUSE"); - __IriSP.MyApiPlayer.changePageUrlOffset(__IriSP.currentPosition); - __IriSP.jQuery(".ui-icon-play").css("background-position","0px -160px"); - - } else if (obj.newstate == 'PLAYING'){ - // une fois la video prete a lire la déplacer au bon timecode - if(__IriSP.startPosition!=null){ - __IriSP.MyApiPlayer.update(__IriSP.startPosition); - __IriSP.startPosition = null; - } - __IriSP.jQuery(".ui-icon-play").css("background-position","-16px -160px"); - } else if (obj.newstate == 'BUFFERING'){ - __IriSP.trace("__IriSP.stateMonitor","BUFFERING : "); - //changePageUrlOffset(currentPosition); - } - -} -__IriSP.positionListener = function(obj) { - //__IriSP.trace("__IriSP.positionListener",obj.position); - __IriSP.currentPosition = obj.position; - var tmp = document.getElementById("posit"); - if (tmp) { tmp.innerHTML = "position: " + __IriSP.currentPosition; } - __IriSP.jQuery("#slider-range-min").slider("value", obj.position); - __IriSP.jQuery("#amount").val(obj.position+" s"); - // afficher annotation - __IriSP.MyLdt.checkTime(__IriSP.currentPosition); - - -} -__IriSP.volumeListener = function (obj) { - __IriSP.currentVolume = obj.percentage; - var tmp = document.getElementById("vol"); - if (tmp) { tmp.innerHTML = "volume: " + __IriSP.currentVolume; } -} - - /* UTIL */ @@ -995,9 +1028,9 @@ annotations = __IriSP.LDTligne.annotations; __IriSP.trace("__IriSP.Search",annotations.length+" "+value); - var finded=0; - var findmem=0; - var factor=0; + var finded = 0; + var findmem = 0; + var factor = 0; __IriSP.trace(value,value.length); if(value.length>=3){ diff -r a012517174aa -r 1bd9377aa5c8 test/index.htm --- a/test/index.htm Wed Mar 23 18:40:58 2011 +0100 +++ b/test/index.htm Mon Mar 28 13:07:23 2011 +0200 @@ -9,8 +9,8 @@
-

SimplePlayer

- Iri SimplePlayer is a javascript's Widget interface to augment existing flash or html5 video player. +

MetdataPlayer

+ Iri MetdataPlayer is a javascript's Widget interface to augment existing flash or html5 video player. It's made to show time annotation and different metadata on video. To implement it on your website it's 's really simple. You just need to insert a div and a script, like the exemple under this lines.

@@ -22,10 +22,12 @@
- + + @@ -42,7 +44,7 @@ height:1, mode:'radio', container:'LdtPlayer', - debug:false, + debug:true, css:'../src/css/LdtPlayer.css'}, player:{ type:'jwplayer',