2011-12-03 13 views
7

Próbuję wykryć, kiedy plik wideo został załadowany. Zrobiłem to z powodzeniem na firefoxie i safari, ale na chrome, buforowane wydarzenie zachowuje się dziwnie .. więc, w moim lokalnym hoście chrome działa dobrze, ale kiedy przesłać na serwer;chrome html5 video buffered.end event

  1. bufor procent zatrzymuje się około 50%, ale bufor% 100

  2. po stronie odświeżony procent pobyt w% 0, ale nadal buforujące ..

tutaj moja JavaScript

function loaded() 
     { 
      var v = document.getElementById('myVideo'); 
      var r = v.buffered; 
      var total = v.duration; 
      var current=v.currentTime; 
      var start = r.start(0); 
        var end = r.end(0); 
      var downloadPercent= Math.round((end/total)*100) 
      $("#loadProgress").css('width',downloadPercent+ '%'); 

        if(downloadPercent==100){ 
       $("#preloaderWrapper").fadeOut(function(){ 
       document.getElementById('myVideo').play(); 
       clearInterval(ratoteLoad); 
       $(this).remove();     
        });    
      }  

     } 

      $('#myVideo').bind('progress', function() 
      { 
       loaded(); 
      }); 

jakiś pomysł? dziękuję

Odpowiedz

7

spróbować zamiast:

myVideoTag = document.getElementById('video'); 
myVideoTag.addEventListener('progress', function(e) { 
    var percent = null; 
    // FF4+, Chrome 
    if (myVideoTag && myVideoTag.buffered && myVideoTag.buffered.length > 0 && myVideoTag.buffered.end && myVideoTag.duration) { 
     percent = myVideoTag.buffered.end(0)/myVideoTag.duration; 
    } 
    // Some browsers (e.g., FF3.6 and Safari 5) cannot calculate target.bufferered.end() 
    // to be anything other than 0. If the byte count is available we use this instead. 
    // Browsers that support the else if do not seem to have the bufferedBytes value and 
    // should skip to there. Tested in Safari 5, Webkit head, FF3.6, Chrome 6, IE 7/8. 
    else if (myVideoTag && myVideoTag.bytesTotal != undefined && myVideoTag.bytesTotal > 0 && myVideoTag.bufferedBytes != undefined) { 
     percent = myVideoTag.bufferedBytes/myVideoTag.bytesTotal; 
    } 

    if (percent !== null) { 
     percent = 100 * Math.min(1, Math.max(0, percent)); 

     // ... do something with var percent here (e.g. update the progress bar) 

    } 

}, false); 

... komentarze skopiowane z mediaelement.js, kod jak dobrze, ale dostosowane do łatwiejszego wyświetlacz tutaj. Pominąłem kod dla Firefox 3.0, ponieważ jest on mniejszy niż odpowiedni. działa poprawnie we wszystkich aktualnych przeglądarek

PS: thx John Dyer dla mejs - wielkie rzeczy;)

+0

dziękuję za komentarz, próbowałem tego, ale wydaje się nadal tak samo dla mnie .. –

+0

Twój komentarz mówi przetestowany w IE 7/8, ale wyobrażam sobie, że test się nie powiódł, ponieważ te przeglądarki nie używają 'addEventListener' – AlienWebguy

+0

@AlienWebguy: wstyd mi - to prawda! pominąłem dodatkowe procedury dla 'myVideoTag.attachEvent ('progress', function (e) {...});' –

Powiązane problemy