2011-11-14 11 views
8

Tengo una aplicación móvil de Javascript que de vez en cuando crea dinámicamente un elemento <video> en la pantalla. Necesito seguir las reproducciones de video con Omniture. He vinculado los eventos play, pause, ended, seeking y seeked para rastrear que el usuario haya iniciado un video, pausado, reanudado y detenido (o que haya completado la visualización del video). todo esto se implementa con llamadas comoSeguimiento de hitos de video de un reproductor de video HTML5 personalizado a Omniture Media Module?

s.Media.play("some_video_name", timePosition); 

y

s.Media.stop("some_video_name"); 

Etc. Esto funciona todo momento.

Lo que quiero hacer ahora es rastrear los hitos posicionales de 0, 25, 75 y 100%, con la opción trackMilestones, pero no entiendo cómo alguno de los ejemplos que he encontrado en línea realmente informa al Omniture s.Media objeto de donde se encuentran. Omniture no podría saber mágicamente dónde está mi video a menos que agregue controladores de eventos a mi elemento de video. ¿Es eso lo que están haciendo?

¿Hay algún método al que pueda llamar el objeto s.Media para informarle de mi posición ya que mi reproductor está reproduciendo video?

Respuesta

-1

No estoy seguro de si ya ha resuelto la solución para esto. Pero para seguir los pasos deMilestone, puede agregar la siguiente pieza de código en el código del monitor de medios de su scode.

var tracked10=false; //Variables used as "flags" to prevent the same code from running 
var tracked90=false; //twice in the same video play. 
s.Media.monitor = function (s,media) { 

//Use this code with either JavaScript or Flash. 
// eVar1 = Media Name 
// event1 = Video Begins 
// event2 = Reached 10% 
// event3 = Reached 90% 
// event4 = Reached 100% 
if (media.event == "Open") { //Executes when the video opens. 
s.Media.trackVars = "eVar1,events"; 
s.Media.trackEvents = "event1"; 
s.events="event1"; 
s.eVar1 = media.name; 
s.Media.track(media.name); 
} 
if ((!tracked10) && (media.percent >= 10) { //Executes at 10% complete. 
s.Media.trackVars = "eVar1,events"; 
s.Media.trackEvents = "event2"; 
s.events="event2" 
s.eVar1 = media.name; 
s.Media.track(media.name); 
tracked10 = true; 
} 
if ((!tracked90) && (media.percent >= 90)) { //Executes at 90% complete. 
s.Media.trackVars = "eVar1,events"; 
s.Media.trackEvents = "event3"; 
s.events="event3" 
s.eVar1 = media.name; 
s.Media.track(media.name); 
tracked90 = true; 
} 
if (media.event == "CLOSE") { //Executes when the video completes. 
s.Media.trackVars = "eVar1,events"; 
s.Media.trackEvents = "event4"; 
s.events="event4" 
s.eVar1 = media.name; 
s.Media.track(media.name); 
var tracked10=false; //Reset flags values at Media.close if visitors can play 
var tracked90=false; //additional videos without reloading the page. 
} 
}; 
0

Usted parece ser perder una llamada que informa de la duración s.Media:

s.Media.open("some_video_name", videoDuration, videoSrc); 

Esto, en combinación con los play/pausa/búsqueda de eventos, debe hacerles saber aproximadamente donde la el video es como un porcentaje de la reproducción total.

Digo aproximadamente porque sospecho que básicamente están ejecutando su propio cronómetro interno que aún puede derivar de la reproducción de video. Por ejemplo, en video HTML5 necesitaría atrapar el evento "en espera" además de pausar. El cronómetro asumiría una velocidad de reproducción en tiempo real, y no manejaría otros motivos de disparo sin eventos por los que un video puede reproducirse pero no avanza a tiempo (el navegador podría negarse a reproducir debido a que ya se está reproduciendo en otra parte de la página/sitio). Presumiblemente, su cronómetro es lo suficientemente bueno para su seguimiento.

4

Aquí hay un ejemplo de trabajo que rastrea 1/4 hitos (25,50,75,100).

1.Asegurarse de tener lo siguiente en su archivo s_code.js se requiere

s.loadModule("Media"); 
s.Media.autoTrack=false; 
s.Media.trackWhilePlaying=true; 
s.Media.trackMilestones="25,50,75,100"; 

módulo de medios dentro de s_code también. He aquí un extracto de lo que necesita

s.m_Media_c="var m=s.m_i('Media');m.cn=function(n){var m=this;return m.s.rep(m.s.rep(m.s.rep(n,\"\\n\",''),\"\\r\",''),'--**--','')};m.open=function(n,l,p,b){var m=this,i=new Object,tm=new Date,a=''," 
+"x;n=m.cn(n);if(!l)l=-1;if(n&&p){if(!m.l)m.l=new Object;if(m.l[n])m.close(n);if(b&&b.id)a=b.id;if(a)for (x in m.l)if(m.l[x]&&m.l[x].a==a)m.close(m.l[x].n);i.n=n;i.l=l;i.o=0;i.x=0;i.p=m.cn(m.playerNa" 
+"me?m.playerName:p);i.a=a;i.t=0;i.ts=0;i.s=Math.floor(tm.getTime()/1000);i.lx=0;i.lt=i.s;i.lo=0;i.e='';i.to=-1;i.tc=0;i.fel=new Object;i.vt=0;i.sn=0;i.sx=\"\";i.sl=0;i.sg=0;i.sc=0;i.lm=0;i.lom=0;m.l" 
+"[n]=i}};m._delete=function(n){var m=this,i;n=m.cn(n);i=m.l[n];m.l[n]=0;if(i&&i.m)clearTimeout(i.m.i)};m.close=function(n){this.e(n,0,-1)};m.play=function(n,o,sn,sx,sl){var m=this,i;i=m.e(n,1,o,sn,s" 
+"x,sl);if(i&&!i.m){i.m=new Object;i.m.m=new Function('var m=s_c_il['+m._in+'],i;if(m.l){i=m.l[\"'+m.s.rep(i.n,'\"','\\\\\"')+'\"];if(i){if(i.lx==1)m.e(i.n,3,-1);i.m.i=setTimeout(i.m.m,1000)}}');i.m." 
+"m()}};m.stop=function(n, 

2.Bind HTML5 reproductor de vídeo de Omniture

se requiere
var html5Player = document.getElementById('video'); 
html5Player.addEventListener('loadedmetadata',playerHandler,false); 
html5Player.addEventListener('play',playerHandler,false); 
html5Player.addEventListener('pause',playerHandler,false); 
html5Player.addEventListener('ended',playerHandler,false); 

    var videoOpened = false; 
    var currentTime = 0; 

    function playerHandler(e){ 
     // window.console.log(e);//video meta 
     //window.console.log(e.type); 
     if (html5Player.currentTime > 0) { 
      currentTime = html5Player.currentTime; 
     } 
     switch(e.type){ 
      case 'play': 
       if(!videoOpened){ 
        window.console.log('opened'); 
        s.Media.open(videoPageName, html5Player.duration, publicationName); 
        s.Media.play(videoPageName, 0); 
       }else{ 
        window.console.log('play'); 
        s.Media.play(videoPageName, currentTime); 
       } 
       // alert('currentTime: ' + currentTime); 
       // alert('duration: ' + Math.floor(html5Player.duration)); 
       // alert('videoPageName: ' + videoPageName); 
       videoOpened = true; 
      break; 
      case 'pause': 
       window.console.log('pause'); 
       s.Media.stop(videoPageName,currentTime); 
      break; 
      case 'ended': 
       window.console.log('ended'); 
       s.Media.stop(videoPageName,currentTime); 
       s.Media.close(videoPageName); 
      break; 
      default: 
      break; 
     } 
    } 
+0

' Módulo de medios dentro de s_code también. Aquí hay un extracto de lo que necesitarás ... '¿De dónde sacas ese extracto? Estoy teniendo un problema donde s.Media.play o .open no es un método, pero se parece al s.loadModule ("Media"); esta cargando. – pjdicke

+0

Esto, presumiblemente, se modificó a partir del código de ejemplo de Adobe, que está aquí: http://blogs.adobe.com/digitalmarketing/analytics/html5-video-measurement/ – mhenry1384

Cuestiones relacionadas