2011-08-12 35 views
17

Sử dụng cùng một video hai lần trong cùng một trang có vẻ như buộc tải lại phương tiện không cần thiết.Làm thế nào để tránh lặp lại tải lại video HTML trong cùng một trang?

So sánh tải một đoạn video để tải một hình ảnh:

<img src="image.png"/> 
<img src="image.png"/> 
<video src="video.webm"></video> 
<video src="video.webm"></video> 

Theo Firefox 5 bảng điều khiển web này tải hình ảnh một lần, nhưng đoạn video hai lần.

Tôi hiểu từ http://www.w3.org/TR/html5/video.html#dom-media-mediagroup rằng các tác giả của thông số dự kiến ​​tải lại một lần trong cả hai trường hợp ("Nhiều phần tử phương tiện tham chiếu cùng nguồn phương tiện sẽ chia sẻ một yêu cầu mạng"), nhưng điều đó không xảy ra với tôi.

Tôi đã cố gắng để chơi xung quanh với các thông số bộ nhớ cache máy chủ (tôi đang sử dụng vanilla web.py), vô ích, và tôi nghi ngờ đó là sủa vào cây sai. Có điều gì cụ thể mà tôi nên xem không? HTML meta elements?

Lưu ý rằng điều này trái ngược với các vấn đề thường gặp khi có nhiều nguồn cho cùng một video. Ở đây, tôi quan tâm đến việc có nhiều phần tử video với cùng một nguồn phát song song (ví dụ: tại các thời điểm khác nhau).

+1

vấn đề thú vị. Bạn sẽ sử dụng javascript để kiểm soát cả hai yếu tố video? Tôi rất tò mò muốn biết điều gì xảy ra nếu bạn tự động thêm phần tử video thứ 2 sau khi video đầu tiên tải xong. – BumbleB2na

+0

@ BumbleB2na Tôi đã thử rằng, '$ (" # hook ") append (video_html) .append (video_html)' (trong đó video_html là một phần tử video) thực sự tạo bốn yêu cầu GET, hai trong số chúng chiếm thời gian đáng kể. –

+0

4 yêu cầu GET .. yikes. Có, nói về một lỗi xung quanh bộ nhớ đệm phương tiện đặc biệt cho

Trả lời

1

Nếu bạn kiểm tra kích thước của video đã tải xuống, cả hai đều tải xuống toàn bộ video không? Trong các thử nghiệm của tôi, hầu hết các trình duyệt đều tải xuống một đoạn nhỏ (đủ để hiển thị ngón tay cái) và sau đó là video đầy đủ khi cần - vì vậy tôi tự hỏi liệu bạn có đếm hai lần tải xuống đầy đủ hay không, khi thực sự chỉ có một tải xuống đầy đủ và một phần.

Tôi đã làm một số thử nghiệm vào tháng 6 với sự giúp đỡ của Bruce Lawson và chúng tôi phát hiện ra rằng một số trình duyệt thực hiện nhiều tải hơn cả hai tôi đã mô tả ở trên.

HTML 5 Video In Real Life (Tests)

0

Bạn có thể dĩ nhiên sắp xếp video theo hình thu nhỏ và họ có tải khi ai đó nhấp vào chúng, nó có thể giúp đỡ nếu bạn không thể tìm thấy cái gì khác.

0

Có vẻ như đây là lỗi trong trình duyệt bạn đang sử dụng, vì nó dường như không tuân thủ đặc tả W3C HTML 5. Tôi khuyên bạn nên gửi báo cáo lỗi cho các nhà phát triển và thử nghiệm của trình duyệt để xem hành vi này so với các trình duyệt khác như thế nào.

1

Nếu bạn đang sử dụng Html 5, thì tốt hơn bạn nên dùng Canvas. Nó sẽ tải video một lần.

1

Công việc này:

<video id="video" class="videohtml5" width="720" height="500" controls="controls" preload="auto" poster=""> 
     <source src="path(1)" /> 
     <source src="path(2)" /> 
     <source src="path(3)" /> 
</video> 
+0

Sử dụng định dạng mã cho mã (Ctrl + K) :) –

1

Tôi nghĩ mọi người đang hiểu sai spec đây.

Nếu bạn xem ví dụ trong thông số kỹ thuật, họ sẽ nói cụ thể về một tài nguyên (tệp) chứa nhiều bản nhạc. Hai phần tử video chứa tham chiếu đến cùng một tệp nhưng các bản nhạc khác nhau trong tệp đó. Hai bản nhạc sau đó được phát lại đồng bộ bằng phương tiện của một nhóm phương tiện.

Nếu bạn có hai thẻ video tham chiếu cùng một tệp với cùng một bản nhạc, tôi sẽ không mong đợi chúng phát đồng bộ theo mặc định. Tôi có thể tưởng tượng rằng bằng cách chỉ định chúng trong cùng một nhóm phương tiện truyền thông, điều này có thể đạt được điều đó, và do đó cho phép cả hai yếu tố sử dụng một kết nối duy nhất với một luồng yêu cầu duy nhất.

Nếu hai video sẽ không được phát đồng bộ, sẽ không hợp lý để mong đợi trình duyệt tải hai video trên một bộ yêu cầu duy nhất. Lưu ý rằng đây là một bộ yêu cầu, một video có thể tạo nhiều yêu cầu tới máy chủ dưới dạng video hoặc phiên truyền thông (nghĩ dừng, tạm dừng và khởi động lại) có thể dài hơn đáng kể so với máy chủ hoặc máy khách sẵn sàng giữ một kết nối.

Hãy tưởng tượng nếu hai yếu tố có các điều khiển khác nhau. Bạn tạm dừng video đầu tiên và để video thứ hai phát. 30 phút trôi qua và bạn khởi động lại video đầu tiên. Trình duyệt chỉ đơn giản là sẽ không lưu trữ những gì có thể lên đến hơn một trăm megabyte nội dung từ máy chủ để cho phép nó phát video đầu tiên mà không cần thực hiện một yêu cầu mới cho máy chủ.

Nếu bạn mong đợi hai phần nội dung trực tuyến rời rạc được gửi qua một kết nối bằng HTTP, thì tôi không tin rằng điều đó là có thể (tốt, hiện đang được triển khai). Đó sẽ là ghép kênh và cuối cùng tôi đã kiểm tra, máy chủ HTTP không có bất kỳ hỗ trợ nào cho ghép kênh. Lưu ý rằng điều này khác với kết nối còn sống, trong đó nhiều phần nội dung được phân phối theo serially, việc ghép kênh được mô tả là nhiều phần nội dung được phân phối song song. Cách thông thường để đạt được điều này chỉ đơn giản là có hai khe cắm mở, điều này đơn giản hơn rất nhiều cho cả máy khách lẫn máy chủ để xử lý hơn là cố gắng hủy bỏ một luồng đơn.

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