2013-08-28 74 views
7

Tôi đang cố gắng thiết lập video làm nền trong một trang. Điều này là tôi có một và kích hoạt 1 tải xuống cho video, sau đó khi nó kết thúc y bắt đầu phát lại video, nhưng cũng có thể tải xuống lại.HTML <video loop> - Đã tải xuống nhiều lần

Như thể đây là một điều nhỏ, sau lần lặp thứ năm, nó chỉ dừng phát video.

Tôi đang sử dụng Chrome 30.0.1599.14 dev ngay bây giờ trên Ubuntu 13,04


Dưới đây là ảnh chụp màn hình và

Dev tools with the video requests

Bất kỳ đề xuất về cách ngăn chặn hành vi này?

+0

Bạn có tìm thấy câu trả lời cho vấn đề này không? Im có cùng một vấn đề. Sử dụng S3. Cảm ơn – James

+0

Đáng buồn thay, không, tôi hiện đang phát triển một trang web khác có video nền, vấn đề tương tự vẫn tồn tại: ( – Diestrin

+0

http://stackoverflow.com/questions/13883569/chrome-re-downloads-video-every-loop – chemoish

Trả lời

0

Cách duy nhất để khắc phục sự cố này là tải tệp trong Bộ nhớ cục bộ hoặc một thứ gì đó. Ví dụ trên

+0

Theo liên kết được đăng bởi @chemoish trong các ý kiến ​​về câu hỏi, hành vi này chỉ xảy ra khi bạn có công cụ mở rộng của Chrome (và tắt bộ nhớ cache được kiểm tra theo mặc định) Bạn có thể chứng minh những gì bạn đang nói bất kỳ –

+0

điều gì xảy ra là mỗi lần vòng lặp video yêu cầu tệp lại và video bị thiếu –

4
<style type="text/css"> 
body { background: url(demo.jpg) center; 
background-size: 300%; 
width:100%; 
height:150px;} 
video { display: block; } 
video#bgvid { 
position: fixed; 
top: 50%; 
left: 50%; 
min-width: 100%; 
min-height: 100%; 
width: auto; 
height: auto; 
z-index: -100000; 
-webkit-transform: translateX(-50%) translateY(-50%); 
transform: translateX(-50%) translateY(-50%); 

} 
@media screen and (max-device-width: 800px) { 
body { background: url(demo.jpg) #000 no-repeat center center fixed; } 
#bgvid { display: none; } 
} 
</style> 
<script type="text/javascript"> 
//if it is not already in local storage 
if (localStorage.getItem("demo") === null){ 
//make request for file 
var oReq = new XMLHttpRequest(); 
oReq.open("POST", "http://LINK_TO_demo.mp4", true); 
// arraybuffer needed for binary file 
oReq.responseType = "arraybuffer"; 
// once loaded 
oReq.onload = function(oEvent) { 
// Convert to Blob Object 
var blob = new Blob([oReq.response], {type: "video/mp4"}); 
var reader = new FileReader(); 
reader.readAsDataURL(blob); 
reader.onload = function(e) { 
var dataURL = reader.result; 
localStorage.setItem("demo", dataURL); 
// reload or add document ready function. 
location.reload(); 
} 
oReq.send();}} 
var videlem = document.createElement("video"); 
videlem.autoplay = true; 
videlem.loop = true; 
videlem.poster = "demo.jpg"; 
videlem.id = "bgvid"; 
var sourceMP4 = document.createElement("source"); 
sourceMP4.type = "video/mp4"; 
sourceMP4.src = localStorage.getItem("demo"); 
sourceMP4.autoPlay = true; 
videlem.appendChild(sourceMP4); 
document.body.appendChild(videlem);  
</script> 

Điều này sẽ làm cho nó phát nhanh hơn và lưu trữ video trong Bộ nhớ cục bộ để không còn yêu cầu nào được thực hiện cho máy chủ.

+1

Lưu trong 'localStorage' không phải là giải pháp tốt như vậy. localStorage có kích thước rất hạn chế – Petroff

+0

Tôi nhận được tính năng này sau khi sửa một số lỗi: "POST" nên được thay đổi thành "GET", "oReq.send()" nên được đặt sau dấu ngoặc ôm sau. Tôi ước tính điều này đã được thử nghiệm. ith sessionStorage. Tuy nhiên, vẫn còn giới hạn khoảng 5MB. – Hugues

1

Tôi đã gặp sự cố tương tự và đã tìm kiếm trên Internet giải pháp. Tôi biết đây là bài đăng cũ 3 năm nhưng có thể giúp những người gặp sự cố này. Trong trường hợp của tôi, chúng tôi đã có một tệp + - 24mb .mp4 trong vòng lặp, chrome đã tải xuống lại video trên mỗi vòng lặp. Tôi đã nén video một chút và chuyển đổi video thành .webm. Kích thước tệp đã giảm xuống còn 4.5mb và sự cố đã biến mất.

Chỉnh sửa: Dường như nó có liên quan đến kích thước tệp. Vấn đề cũng không xảy ra với 4.5mb .mp4.

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