2011-11-14 15 views
8

Ho un'applicazione Javascript mobile che occasionalmente crea dinamicamente un elemento <video> sullo schermo. Devo tenere traccia delle riproduzioni video con Omniture. Ho associato gli eventi play, pause, ended, seeking e seeked per tenere traccia del fatto che l'utente ha avviato un video, ha messo in pausa, ha ripreso e interrotto (o che ha completato la visualizzazione del video). Tutto questo è realizzato con le chiamate comeTracciamento dei traguardi dei video da un video player HTML5 personalizzato al modulo multimediale Omniture?

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

e

s.Media.stop("some_video_name"); 

Ecc Questo funziona tutto al momento.

Quello che voglio fare ora è tracciare le pietre miliari posizionali di 0, 25, 75 e 100%, con l'opzione trackMilestones, ma non capisco come nessuno degli esempi che ho trovato online informino effettivamente il Omniture s.Media oggetto di dove si trovano. Omniture non sarebbe in grado di sapere magicamente dove si trova il mio video, a meno che non colleghi i gestori di eventi al mio elemento video. È quello che stanno facendo?

C'è qualche metodo che posso chiamare sull'oggetto s.Media per informarlo della mia posizione mentre il mio lettore sta riproducendo video?

risposta

-1

Non sono sicuro di aver già capito la soluzione. Ma per tenere traccia di Milestone è possibile aggiungere la seguente parte di codice nel codice del monitor multimediale dello 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

Lei sembra mancare una chiamata che informa s.Media della durata:

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

Questo, in combinazione con i play/pausa/cercare eventi, dovrebbe far loro sapere approssimativamente dove il il video è come una percentuale della riproduzione totale.

Dico approssimativamente perché ho il sospetto che stiano basando il proprio cronometro interno che può ancora andare alla deriva dall'headhead del video. Ad esempio, nei video HTML5 devi prendere l'evento "in attesa" oltre alla pausa. Il cronometro assumerebbe una frequenza di riproduzione in tempo reale e non gestirà altri motivi di innesco non evento per cui un video può essere riprodotto ma non avanza nel tempo (il browser potrebbe rifiutarsi di giocare a causa di un video già riprodotto altrove nella pagina/luogo). Presumibilmente il loro cronometro è abbastanza buono per i loro scopi di tracciamento.

4

Ecco un esempio funzionante che traccia 1/4 di pietre miliari (25,50,75,100).

1.Verificare si ha la seguente nel file s_code.js è necessario

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

modulo di media all'interno s_code pure. Ecco un estratto di quello che vi serve

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, 

lettore video HTML5 per 2.Bind Omniture

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

'modulo di supporto è richiesto entro s_code pure. Ecco un estratto di ciò che ti servirà ... 'Dove stai ottenendo quell'estratto? Sto avendo un problema dove s.Media.play o .open non è un metodo, ma assomiglia a s.loadModule ("Media"); sta caricando. – pjdicke

+0

Questo è presumibilmente modificato dal codice di esempio di Adobe, che è qui: http://blogs.adobe.com/digitalmarketing/analytics/html5-video-measurement/ – mhenry1384