2012-05-05 16 views
19

Czy jest możliwe wyszukiwanie w konkretnym punkcie w html5 video wyświetlanym na stronie internetowej? Mam na myśli, czy mogę wprowadzić konkretną wartość czasu (powiedzmy 01:20:30:045) i czy sterowanie gracza (suwak) przesunie się do tego punktu i zacznie grać od tego momentu?szukaj do punktu w html5 wideo

W starszej wersji mozilla vlcplugin Myślę, że jest to możliwe przez seek(seconds,is_relative) metody .. ale chciałbym wiedzieć, czy jest to możliwe w wideo html.

Edit:

stworzyłem stronę z filmem i dodaje skrypt jako below.When klikam na link, wyświetla czas click..but nie zwiększamy lokalizację zabaw .. ale nadal gra normalnie.

Czy nie należy zmienić lokalizacji odtwarzania wideo?

html

<video id="vid" width="640" height="360" controls> 
     <source src="/myvid/test.mp4" type="video/mp4" /> 
</video> 
<a id="gettime" href="#">time</a> 
<p> 
you clicked at:<span id="showtime"> </span> 
</p> 

javascript

$(document).ready(function(){ 
    var player = $('#vid').get(0); 
    $('#gettime').click(function(){ 
      if(player){ 
       current_time=player.currentTime; 
       $('#showtime').html(current_time+" seconds"); 
       player.currentTime=current_time+10; 
      } 
     }); 
} 
); 
+0

Możliwy duplikat [wideo HTML5 szukając \ [zaktualizowane \]] (http://stackoverflow.com/questions/9311570/html5-video-seeking-updated) – rogerdpack

Odpowiedz

1

Niestety wydaje się, z pewnymi elementami filmu zachowuje się inaczej niż inni. Na przykład z elementem wideo amazon, wydaje się, że musisz wywołać pauzę, zanim będziesz mógł szukać w dowolnym miejscu, a następnie zadzwoń do gry. Jeśli jednak po ustawieniu currentTime nazwiesz "zbyt szybko", to nie będzie on się trzymał. Dziwny.

Oto moja aktualna praca wokół:

function seekToTime(ts) { 
    // try and avoid pauses after seeking 
    video_element.pause(); 
    video_element.currentTime = ts; // if this is far enough away from current, it implies a "play" call as well...oddly. I mean seriously that is junk. 
    // however if it close enough, then we need to call play manually 
    // some shenanigans to try and work around this: 
    var timer = setInterval(function() { 
     if (video_element.paused && video_element.readyState ==4 || !video_element.paused) { 
      video_element.play(); 
      clearInterval(timer); 
     }  
    }, 50); 
}