2010-12-31 32 views
8

Tôi muốn có thể phát lại video từ một thời điểm cụ thể bằng thẻ video HTML5 (và hiện chỉ cần lo lắng về Chrome). Điều này có thể bằng cách thiết lập thuộc tính currentTime của một phần tử video. Điều đó hoạt động tốt trong Chrome với một video có nguồn gốc từ html5rocks.com, nhưng bị bỏ qua khi cùng một tệp được tải từ máy chủ web cục bộ của riêng tôi.Thẻ video HTML5 trong Chrome - Tại sao thời gian hiện tại bị bỏ qua khi video được tải xuống từ máy chủ web của tôi?

Sử dụng mã mẫu từ http://playground.html5rocks.com/#video_tag, tôi đã đến đoạn HTML sau:

<!DOCTYPE html> 
<html> 
<body> 
<video id="video1" width="320" height="240" volume=".7" controls preload=true autobuffer> 
    <source src="http://playground.html5rocks.com/samples/html5_misc/chrome_japan.webm" type='video/webm; codecs="vp8, vorbis"'/> 
    </video> 
<input type=button onclick="play()" value="play"> 
<input type=button onclick="setTime()" value="setTime"> 
<input type=button onclick="pause()" value="pause"> 
<script> 
    var play=function() { 
     document.getElementById("video1").play(); 
    } 
    var setTime=function() { 
     document.getElementById("video1").currentTime=2; 
    } 
    var pause=function() { 
     document.getElementById("video1").pause(); 
    } 
</script> 
</body> 
</html> 

Sử dụng Chrome, nếu bạn

  1. Chờ cho video tải cho một chút (cho đến khi thanh tiến trình là khoảng 10% trong)
  2. Nhấn setTime - bạn cần thông báo thời gian nhảy tới 2 giây
  3. nhấn play

... video sẽ bắt đầu lúc 2 giây trong.

Nhưng nếu tôi tải file webm trong src nguồn đến máy chủ web địa phương của tôi, và sự thay đổi src chỉ tại địa phương:

<source src="chrome_japan.webm" type='video/webm; codecs="vp8, vorbis"'/> 

... sau đó đặt currentTime hoàn toàn bị bỏ qua. Không có lỗi nào hiển thị trong bảng điều khiển công cụ dành cho nhà phát triển.

Hiện tại, máy chủ web của tôi đang phân phát này với loại mime "video/webm", nhưng nó sẽ được phân phát như bất kỳ tệp cũ nào - không được phát trực tuyến.

Tôi có cần một máy chủ web truyền theo một số cách cụ thể không? Điều gì khác có thể có lỗi ở đây?

Lưu ý: Máy chủ web là nền tảng độc quyền và sẽ không có bất kỳ cài đặt hoặc điều khiển chính xác nào giống như Tomcat hoặc một số máy chủ web thường được sử dụng khác mặc dù có thể có các cách khác để đạt được hiệu quả tương tự.

+0

Nếu có thể, hãy chụp các gói HTTP của hai trường hợp và tìm sự khác biệt. – 9dan

Trả lời

12

Đảm bảo máy chủ web của bạn có khả năng phân phát tài liệu bằng các phạm vi byte. Google Chrome yêu cầu điều này hoạt động. Nếu không có nó, tìm kiếm sẽ bị vô hiệu hóa và thiết lập currentTime sẽ không có hiệu lực.

Để kiểm tra xem máy chủ web của bạn thực hiện điều này, sử dụng lệnh sau:

curl --dump-header - -r0-0 http://theurl 

Tình trạng phản ứng phải đọc 206 Partial Content và bạn sẽ nhận được chỉ byte đầu tiên của tài nguyên thay vì toàn bộ tài nguyên.

-Phil

+0

Tôi sẽ không thể kiểm tra điều này trong một thời gian tuy nhiên, tôi biết rằng máy chủ web là _not_ có khả năng phân phối tài liệu bằng cách sử dụng các phạm vi byte. cảm ơn cho mẹo ... – jlarson

+0

"Google Chrome yêu cầu công việc này hoạt động. Nếu không có, tìm kiếm sẽ bị vô hiệu hóa và cài đặt currentTime sẽ không có hiệu lực". CẢM ƠN! Điều này thực sự làm tôi rối tung lên. –

+2

lỗi Chromium tương ứng không được yêu cầu tại http://code.google.com/p/chromium/issues/detail?id = 121765 – user7610

Các vấn đề liên quan