2012-04-30 34 views
63

Tôi đang tìm cách đặt video trong trang HTML5 sẽ bắt đầu phát khi tải trang và sau khi hoàn thành, lặp lại từ đầu mà không bị gián đoạn. Video cũng phải NOT có bất kỳ điều khiển nào được liên kết với nó và tương thích với tất cả các trình duyệt 'hiện đại' hoặc có tùy chọn chèn lấp.Phát video lặp vô hạn khi tải trong HTML5

Trước đây tôi đã thực hiện điều này qua FlashFLVPlayback, nhưng tôi muốn tránh xa rõ ràng Flash trong hình cầu HTML5. Tôi nghĩ tôi có thể sử dụng số setTimeout của javascript để tạo vòng lặp mượt mà, nhưng tôi nên sử dụng cái gì để nhúng video? Có điều gì đó ở đó sẽ phát video theo cách FLVPlayback sẽ không?

Trả lời

111

Các loop thuộc tính nên làm điều đó:

<video width="320" height="240" autoplay loop> 
    <source src="movie.mp4" type="video/mp4" /> 
    <source src="movie.ogg" type="video/ogg" /> 
    Your browser does not support the video tag. 
</video> 

Nếu bạn có một vấn đề với các thuộc tính lặp (như chúng tôi đã có trong quá khứ), lắng nghe sự kiện videoEnd và gọi phương thức play() khi nó cháy.

Lưu ý1: Tôi không chắc chắn về hành vi trên iPad/iPhone của Apple, vì chúng có một số hạn chế đối với autoplay.

Note2: loop="true"autoplay="autoplay" đang bị phản đối

+0

Cảm ơn. Tôi sẽ thử. – stefmikhail

+1

Thực sự là lời khuyên tốt thưa ngài. Tôi đã kết thúc bằng cách sử dụng 'javascript' để lắng nghe sự kiện' videoEnd' và lặp lại từ đầu như những gì tôi có thể nói, thuộc tính 'loop' không được tất cả các trình duyệt hỗ trợ. Đối với thiết bị iOS, chúng không hỗ trợ 'autoplay' dưới bất kỳ hình dạng hoặc hình thức nào của iOS 5, vì vậy tôi chỉ sử dụng hình ảnh dự phòng cho thiết bị di động. Cảm ơn một lần nữa. – stefmikhail

+8

sử dụng

0

Bạn có thể làm điều này trong hai cách sau:

1) Sử dụng loop thuộc tính trong phần tử video (được đề cập trong câu trả lời đầu tiên):

2) và bạn có thể sử dụng các sự kiện ended phương tiện truyền thông:

window.addEventListener('load', function(){ 
    var newVideo = document.getElementById('videoElementId'); 
    newVideo.addEventListener('ended', function() { 
     this.currentTime = 0; 
     this.play(); 
    }, false); 

    newVideo.play(); 

});