2012-05-05 9 views
19

Có thể tìm kiếm một điểm cụ thể trong html5 video được hiển thị trong một trang web không? Ý tôi là, tôi có thể nhập một giá trị thời gian cụ thể không (nói 01:20:30:045) và điều khiển trình phát (thanh trượt) di chuyển đến điểm đó và phát từ điểm đó trở đi?tìm kiếm một điểm trong video html5

Trong phiên bản cũ hơn của mozilla vlcplugin Tôi nghĩ rằng điều này có thể theo phương thức seek(seconds,is_relative) .. nhưng tôi muốn biết liệu điều này có thể thực hiện được trong video html hay không.

Edit:

Tôi tạo ra trang web với video và thêm javascript như below.When tôi bấm vào liên kết, nó sẽ hiển thị thời điểm click..but nó không tăng vị trí chơi .. nhưng vẫn tiếp tục chơi bình thường.

Vị trí phát video có được thay đổi không?

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

có thể trùng lặp của [video HTML5 tìm kiếm \ [cập nhật \]] (http://stackoverflow.com/questions/9311570/html5-video-seeking-updated) – rogerdpack

Trả lời

1

Đáng tiếc là có vẻ như với một số thành phần của film nó cư xử khác biệt so với những người khác. Ví dụ với một video_element amazon, có vẻ như bạn phải gọi tạm dừng trước khi bạn có thể tìm kiếm ở bất cứ đâu, sau đó gọi phát. Tuy nhiên, nếu bạn gọi trò chơi "quá nhanh" sau khi đặt currentTime thì nó sẽ không hoạt động. Odd.

Đây là công việc hiện tại của tôi xung quanh:

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); 
}