Html 5 media player

Description

il s'agit d'un player fonctionnant avec la balise <video> du html 5 et utilisant ses méthodes et propriétés associe au Dhtml et css les possibilités son le réglage du son, le déplacement et le redimensionnement de la fenêtre play ,pause ,mute ...etc

fonctionne avec firefox opera ie9 et safari.

pour la demo c'est a cette adresse http://scriptevol.toile-libre.org/video5/video5.html

Source / Exemple :


tbplein=new Array()

var kplayer={
px:0,
py:0,
ggt:0,
ggs:0,
cons:null,
loto:false,
divgeneral:null,
divhd:null,
divivi:null,
divgg:null,
divdefile:null,
divcontrole:null,
divvol:null,

scr:function(azer,evt){

		typeof this.prp == 'undefined' ? this.prp=false : null;

		var el=kplayer.divivi;

		if(arguments.length==1){

			clearInterval(kplayer.ggs);
			document.documentElement.removeEventListener("mousedown", kdiver.selecte, false);
			document.documentElement.removeEventListener("mousemove", kdiver.souris, false);
			document.documentElement.removeAttribute("onmouseup");

			if(azer=='rd'){
				this.prp=false;
			}
			if(azer=='defile' && this.prp==true){
				this.prp=false;
				el.play();
				kplayer.ggt=setInterval(kplayer.def,50);
			}
		}
		if(arguments.length==2){
			var dde=(navigator.vendor) ? document.body : document.documentElement;
			if(azer=='rd' && this.prp==true){
				return false;
			}

			document.documentElement.addEventListener("mousemove", kdiver.souris, false);
			document.documentElement.addEventListener("mousedown", kdiver.selecte, false);
			document.documentElement.setAttribute("onmouseup", "kplayer.scr('"+azer+"')");

			kdiver.setX=evt.clientX + dde.scrollLeft;
			kdiver.setY=evt.clientY + dde.scrollTop;
			kplayer.px=kdiver.setX;
			kplayer.py=kdiver.setY;
			if(azer=='rd'){
				this.prp=true;
				kplayer.ggs=setInterval('kplayer.redim("'+azer+'")',10);
			}
			if(azer=='vol' || azer=='defile'){

				kplayer.cons=(azer=='vol' ? kplayer.divvol : kplayer.divdefile);

				if(azer=='defile' && !el.paused){
					el.pause();
					this.prp=true;
				}
				kplayer.ggs=setInterval('kplayer.sps("'+azer+'")',10);
			}
		}
	},

sps:function(azer){

		var el=kplayer.divivi;
		var ds1 =kplayer.cons;
		var rcsb =ds1.getElementsByTagName('div')[0];

		if((parseInt(getComputedStyle(rcsb, null).getPropertyValue('margin-left')))+kdiver.setX-kplayer.px<0){
			rcsb.style.marginLeft=0+'px';
			if(azer=='vol'){
				el.volume=0;
			}
			else{
				el.currentTime=0;
			}
			kplayer.scr(azer);
			return false;
		}

		if((parseInt(getComputedStyle(rcsb, null).getPropertyValue('margin-left')))+rcsb.offsetWidth+kdiver.setX-kplayer.px>ds1.offsetWidth){
			rcsb.style.marginLeft=ds1.offsetWidth-rcsb.offsetWidth+'px';
			if(azer=='vol'){
				el.volume=1;
			}
			else{
				el.currentTime=el.duration;
			}
			kplayer.scr(azer);
			return false;
		}

		rcsb.style.marginLeft=(parseInt(getComputedStyle(rcsb, null).getPropertyValue('margin-left')))+(kdiver.setX-kplayer.px)+'px';
		if(azer=='vol'){
			el.volume=parseInt(getComputedStyle(rcsb, null).getPropertyValue('margin-left'))/(kplayer.divvol.offsetWidth-rcsb.offsetWidth);
			kplayer.divvol.getElementsByTagName('span')[0].style.width=rcsb.style.marginLeft;
		}
		else{
			el.currentTime= parseInt(getComputedStyle(rcsb, null).getPropertyValue('margin-left'))*(el.duration/(kplayer.divdefile.offsetWidth-rcsb.offsetWidth));
			kplayer.divdefile.getElementsByTagName('div')[3].style.width=parseInt(kplayer.divdefile.getElementsByTagName('div')[0].style.marginLeft)+5+'px';
			kplayer.tpm();
		}
		kplayer.px=kdiver.setX;
	},

odevi:function(choix){

		var ell=kplayer.divivi;

		if((choix=="pla" && ell.paused)){
			ell.play();
			kplayer.imvoil();
			kplayer.ggt=setInterval(kplayer.def,50);
		}
		if(choix=="stp" && ell.currentTime){
			clearInterval(kplayer.ggt);
			ell.currentTime=0;
			ell.pause();
			kplayer.tpm('zero');
			kplayer.divdefile.getElementsByTagName('div')[0].style.marginLeft=0+'px';
			kplayer.divdefile.getElementsByTagName('div')[3].style.width=5+'px';
			kplayer.imvoil();

		}

		if(choix=="pau"){
			ell.pause();
			kplayer.imvoil();
		}

		if(choix=="pos"){
			ell.currentTime=0;
			kplayer.tpm('zero');
			if(ell.paused){
				kplayer.divdefile.getElementsByTagName('div')[0].style.marginLeft=0+'px';
				kplayer.divdefile.getElementsByTagName('div')[3].style.width=0+'px';
				kplayer.imvoil();
			}
		}
		if(choix=="mut"){
			if(ell.muted){
				kplayer.divvol.getElementsByTagName('img')[0].setAttribute('src','res/mute.png');
				ell.muted=false;
			}
			else{
				kplayer.divvol.getElementsByTagName('img')[0].setAttribute('src','res/mute2.png');
				ell.muted=true;
			}
		}
	},

redim:function(){

		var dgtgn=kplayer.divdefile.getElementsByTagName('*');
		var dico=kplayer.divgeneral;
		if(arguments[0]=='plus'){
			var dde=document.documentElement;
			var ddl=(navigator.vendor) ? document.body : document.documentElement;
			var deca=dde.clientWidth-parseInt(dico.offsetWidth);
			var decy=dde.clientHeight-parseInt(dico.offsetHeight);
			tbplein.push(dico.offsetTop);
			tbplein.push(dico.offsetLeft);
			tbplein.push(deca);
			tbplein.push(decy);
			dico.style.top=0+ddl.scrollTop+"px";
			dico.style.left=0+ddl.scrollLeft+"px";
		}
		if(arguments[0]!='plus' && arguments[0]!='moins'){
			var deca=(kdiver.setX-kplayer.px);
			var decy=kdiver.setY-kplayer.py;
			if(tbplein.length!=0){
				tbplein.pop();
				tbplein.pop();
				tbplein.pop();
				tbplein.pop();
			}
		}
		if(arguments[0]=='moins'){
			dico.style.top=tbplein[0]+"px";
			dico.style.left=tbplein[1]+"px";
			var deca=-(tbplein[2]);
			var decy=-(tbplein[3]);
			tbplein.pop();
			tbplein.pop();
			tbplein.pop();
			tbplein.pop();
		}
		var el=kplayer.divivi;
		var barre=kplayer.divdefile.getElementsByTagName('div')[0];
		var defi=kplayer.divdefile;
		dico.style.width=dico.offsetWidth+deca+'px';
		defi.style.width=defi.offsetWidth+deca+'px';
		el.style.width=el.offsetWidth+deca+'px';
		el.style.height=el.offsetHeight+decy+'px';
		kplayer.divgg.style.width=el.style.width;
		kplayer.divgg.style.height=el.style.height;
		if(loto==true){
			kplayer.divdefile.getElementsByTagName('div')[2].style.width=defi.offsetWidth-barre.offsetWidth+'px';
		}
		if(loto==false){
			kplayer.lolo();
		}
		if(el.paused){
			barre.style.marginLeft=el.currentTime/(el.duration/(defi.offsetWidth-barre.offsetWidth))+'px';
			kplayer.divdefile.getElementsByTagName('div')[3].style.width=parseInt(barre.style.marginLeft)+5+'px';
		}
		kplayer.px=kdiver.setX;
		kplayer.py=kdiver.setY;
	},

def:function(){
		if(kplayer.divgeneral==null){
			clearInterval(kplayer.ggt);
			return false;
		}
		var el=kplayer.divivi;
		var barre=kplayer.divdefile.getElementsByTagName('div')[0];
		if(el.currentTime && el.readyState>=3){
			barre.style.marginLeft=el.currentTime/(el.duration/(kplayer.divdefile.offsetWidth-barre.offsetWidth))+'px';
			kplayer.divdefile.getElementsByTagName('div')[3].style.width=parseInt(barre.style.marginLeft)+5+'px';
			kplayer.tpm();
		}

		if(el.ended){
			kplayer.odevi('stp');
		}
		if(el.paused && el.readyState>=3){
			clearInterval(kplayer.ggt);
		}
	},

clvol:function(evt){
		var rcsb=kplayer.divvol.getElementsByTagName('div')[0];
		var ell=kplayer.divgeneral;
		var vovo=kplayer.divvol;
		var valrs=evt.clientX-(kplayer.divcontrole.offsetLeft+ell.offsetLeft+vovo.offsetLeft)-(rcsb.offsetWidth/2);
		if(valrs>=0 && valrs<=vovo.offsetLeft){
			rcsb.style.marginLeft=valrs+'px';
			kplayer.divvol.getElementsByTagName('span')[0].style.width=rcsb.style.marginLeft;
			kplayer.divivi.volume=parseInt(rcsb.style.marginLeft)/(vovo.offsetWidth-(rcsb.offsetWidth/2));
		}
	},

tpm:function(oui){

		typeof this.total == 'undefined' ? this.total=1 : null;

		if (arguments.length==1 && oui=='dif'){
			this.total=(this.total==0 ? 1 : 0);
		}
		var dura=(this.total==0 ? kplayer.divivi.currentTime : kplayer.divivi.duration-kplayer.divivi.currentTime);

		var elem=kplayer.divcontrole.getElementsByTagName('div')[0];

		if (oui=='zero' || isNaN(dura)) {
			elem.firstChild.nodeValue='00:00:00';
		}
		else{

			var min = Math.floor(dura / 60);
			if (min < 10) {
				min = '0' + min;
			}
			var sec = Math.floor(dura % 60);
			if (sec < 10) {
				sec = '0' + sec;
			}
			elem.firstChild.nodeValue='00:'+min+ ':'+sec;
		}
	},

imvoil:function(){
		var ge=kplayer.divgg;
		var el=kplayer.divivi;
		if((!el.paused)){
			kplayer.divcontrole.getElementsByTagName('img')[0].setAttribute('src','res/play2.png');
			ge.setAttribute('onclick','kplayer.odevi("pau")');
		}
		else{
			kplayer.divcontrole.getElementsByTagName('img')[0].setAttribute('src','res/play.png');
			ge.style.width=el.style.width;
			ge.style.height=el.style.height;
			ge.setAttribute('onclick','kplayer.odevi("pla")');
		}
	},

pb:function(evt){
		var ell=kplayer.divivi;
		var le=kplayer.divgeneral;
		var rcsb=kplayer.divdefile.getElementsByTagName('div')[0];
		var rcml=evt.clientX-(le.offsetLeft+ell.offsetLeft)-rcsb.offsetWidth;
		if(rcml>0){
			ell.currentTime= rcml*(ell.duration/(kplayer.divdefile.offsetWidth-rcsb.offsetWidth));
			rcsb.style.marginLeft=rcml+'px';
			kplayer.divdefile.getElementsByTagName('div')[3].style.width=parseInt(rcsb.style.marginLeft)+5+'px';
		}
	},

attente:function() {
		kplayer.divgg.getElementsByTagName('img')[0].style.visibility='visible';
		return false;
	},
	
saroule:function() {
		kplayer.divgg.getElementsByTagName('img')[0].style.visibility='hidden';
		return false;
	},

changer:function(titre){
		loto=false;
		if(kplayer.divgeneral!=null){
			var le=kplayer.divivi;
			if(!le.paused){
				kplayer.odevi('stp');
			}
			kplayer.divdefile.getElementsByTagName('div')[2].style.width=0+'px';

			var version=navigator.userAgent.indexOf('Firefox',0);
			if(navigator.userAgent.indexOf('Firefox',0)!=-1 && parseInt(navigator.userAgent.substring(version+8,version+9))<4){
				le.setAttribute('src',titre+'.ogv');
			}
			else{
				var elemensource=le.getElementsByTagName('source');
				elemensource[0].setAttribute('src',titre+'.webm');
				elemensource[1].setAttribute('src',titre+'.mp4');
				elemensource[2].setAttribute('src',titre+'.ogv');
				elemensource[3].setAttribute('src',titre+'.ogg');
			}

			le.load();
			kplayer.odevi('pla');
			kplayer.centrage(kplayer.divgeneral);

		}
		else{
			kplayer.initplayer(titre);
		}
	},

lolo:function(evt){

		var elem=kplayer.divivi;
		var dura=elem.duration;

		if(elem.buffered && elem.buffered.length>0){
			var charge=elem.buffered.end(0);
			kplayer.divdefile.getElementsByTagName('div')[2].style.width=(((charge/dura).toFixed(2))*(kplayer.divdefile.offsetWidth-kplayer.divdefile.getElementsByTagName('div')[0].offsetWidth))+'px';
			if(((charge/dura).toFixed(2))>=0.96){
				loto=true;
			}
		}
		else{
			kplayer.divdefile.getElementsByTagName('div')[2].style.width=((elem.loaded/elem.total)*(kplayer.divdefile.offsetWidth-kplayer.divdefile.getElementsByTagName('div')[0].offsetWidth))+'px';
			if((elem.loaded/elem.total)>=0.96){
				loto=true;
			}
		}
	},

initplayer:function(titre){

		kplayer.divgeneral=kdiver.creation('div','body','class','divico');
		var divico=kplayer.divgeneral;

		kplayer.divhd=kdiver.creation('div',divico,'class','hd','onmousedown','kdiver.sp(event)','onmouseup','kdiver.sp()','ondblclick','kplayer.pleinfin()');
		var hd=kplayer.divhd;
		kdiver.creation('div',hd,'class','bouge','onclick','kplayer.vivifin()');
		kdiver.creation('div',hd,'class','plein','onclick','kplayer.pleinfin()');
		kdiver.creation('span',hd,'class','ktxt','txt','K player');
		kplayer.divgg=kdiver.creation('div',divico,'class','gg','onclick','kplayer.odevi("pla")','class','ghh');

		var version=navigator.userAgent.indexOf('Firefox',0);
		if(navigator.userAgent.indexOf('Firefox',0)!=-1 && parseInt(navigator.userAgent.substring(version+8,version+9))<4){
			kplayer.divivi=kdiver.creation('video',kplayer.divgg,'class','vivi','src',titre+'.ogv','oncanplay','kplayer.saroule()','poster','res/kp.png','onwaiting','kplayer.attente()','autobuffer','true','preload','auto','onprogress','kplayer.lolo(event)');	 
		}
		else{
			kplayer.divivi=kdiver.creation('video',kplayer.divgg,'class','vivi','oncanplay','kplayer.saroule()','poster','res/kp.png','onwaiting','kplayer.attente()','autobuffer','true','preload','auto','onprogress','kplayer.lolo(event)');
			kdiver.creation('source',kplayer.divivi,'src',titre+'.webm','type','video/webm');
			kdiver.creation('source',kplayer.divivi,'src',titre+'.mp4','type','video/mp4');
			kdiver.creation('source',kplayer.divivi,'src',titre+'.ogv','type','video/ogg');
			kdiver.creation('source',kplayer.divivi,'src',titre+'.ogg','type','video/ogg');
		}

		kdiver.creation('img',kplayer.divgg,'class','imwait','src','res/29.gif');
		kdiver.creation('div',divico,'class','dr');
		kdiver.creation('div',divico,'class','gc');
		kplayer.divdefile=kdiver.creation('div',divico,'class','defile');
		var defile=kplayer.divdefile;
		kdiver.creation('div',defile,'class','scroll1','onmousedown','kplayer.scr("defile",event)');
		kdiver.creation('div',defile,'class','clique','onclick','kplayer.pb(event)');
		kdiver.creation('div',defile,'class','prech');
		kdiver.creation('div',defile,'class','suis');
		kplayer.divcontrole=kdiver.creation('div',divico,'class','controle');
		var controle=kplayer.divcontrole;
		kdiver.creation('img',controle,'src','res/play.png','onclick','kplayer.odevi("pla")');
		kdiver.creation('img',controle,'src','res/pause.png','onclick','kplayer.odevi("pau")');
		kdiver.creation('img',controle,'src','res/stop.png','onclick','kplayer.odevi("stp")');
		kdiver.creation('img',controle,'src','res/raz.png','onclick','kplayer.odevi("pos")');
		kdiver.creation('div',controle,'class','tmp','txt','00:00:00','onclick','kplayer.tpm("dif")','onmousedown','kdiver.selecte(event)');
		kplayer.divvol=kdiver.creation('div',kplayer.divcontrole,'class','vol');
		var vol=kplayer.divvol;
		kdiver.creation('img',vol,'class','temu','src','res/mute.png','onclick','kplayer.odevi("mut")');
		kdiver.creation('span',vol,'class','suivol');
		kdiver.creation('span',vol,'class','clicvol','onclick','kplayer.clvol(event)');
		kdiver.creation('div',vol,'class','scrolvol','onmousedown','kplayer.scr("vol",event)');
		kdiver.creation('div',divico,'class','rd','onmousedown','kplayer.scr("rd",event)');
		kplayer.zidex(divico);
		kplayer.odevi('pla');
		kplayer.centrage(kplayer.divgeneral)
	},

zidex:function(elem){
		var allElements = document.getElementsByTagName('*');
		var vaval=0;
		var vaz=0;
		for (var i = 0; i< allElements.length; i++){
			if(allElements[i].parentNode==document.body){
				vaz =parseInt(navigator.appName.substring(0,5)=="Micro" ? allElements[i].currentStyle.zIndex : getComputedStyle(allElements[i],null).getPropertyValue('z-index'));
				if(vaz>vaval){
					vaval=vaz;
				}
			}
		}
		elem.style.zIndex=vaval+1;
	},

vivifin:function(){
		kplayer.divivi.pause();
		kplayer.divivi.removeAttribute("onprogress"); 
		kplayer.divgeneral.parentNode.removeChild(kplayer.divgeneral);
		kplayer.divgeneral=null;
		if(tbplein.length!=0){
			tbplein.pop();
			tbplein.pop();
			tbplein.pop();
			tbplein.pop();
		}
	},
pleinfin:function(){
		if(tbplein.length==0){
			kplayer.redim('plus');
			return false;
		}
		if(tbplein.length>=3){
			kplayer.redim('moins');
			return false;
		}
	},

centrage:function(quoi){
		var dde=document.documentElement;
		var ddl=(navigator.vendor) ? document.body : document.documentElement;
		quoi.style.left=((dde.clientWidth-quoi.offsetWidth)/2)+ddl.scrollLeft+'px';
		quoi.style.top=50+ddl.scrollTop+"px";
	},

}

Conclusion :


la revolution est en marche

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.