เล่นวิดีโอแบบวนซ้ำไม่ จำกัด เมื่อโหลดใน HTML5


92

ฉันต้องการวางวิดีโอในหน้า HTML5 ที่จะเริ่มเล่นในการโหลดหน้าเว็บและเมื่อเล่นเสร็จแล้วให้วนกลับไปที่จุดเริ่มต้นโดยไม่หยุดพัก วิดีโอที่ควรนอกจากนี้ยังไม่ได้มีการควบคุมใด ๆ ที่เกี่ยวข้องกับมันและทั้งสองจะเข้ากันได้กับทุกเบราว์เซอร์ 'ทันสมัยหรือมีตัวเลือกในการ polyfill ที่

ก่อนหน้านี้ฉันจะทำสิ่งนี้ผ่านFlashและFLVPlaybackแต่ฉันต้องการหลีกเลี่ยงFlashในทรงกลม HTML5 ฉันคิดว่าฉันสามารถใช้ javascript setTimeoutเพื่อสร้างลูปที่ราบรื่นได้ แต่ฉันควรใช้อะไรในการฝังวิดีโอเอง มีบางอย่างที่จะสตรีมวิดีโอในแบบที่FLVPlaybackต้องการหรือไม่?

คำตอบ:


156

ห่วงแอตทริบิวต์ควรจะทำมันได้

<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>

หากคุณมีปัญหากับแอตทริบิวต์การวนซ้ำ (เหมือนที่เราเคยมีในอดีต) ให้ฟังvideoEndเหตุการณ์และเรียกใช้play()เมธอดเมื่อมันเริ่ม

หมายเหตุ 1: ผมไม่แน่ใจว่าเกี่ยวกับพฤติกรรมบน iPad / iPhone แอปเปิ้ลเพราะพวกเขามีข้อ จำกัด autoplayบางอย่างกับ

Note2: loop="true"และ autoplay="autoplay"เลิกใช้แล้ว


1
คำแนะนำที่ดีครับ ฉันลงเอยด้วยการใช้javascriptเพื่อฟังvideoEndเหตุการณ์และวนกลับไปที่จุดเริ่มต้นจากสิ่งที่ฉันบอกloopได้เบราว์เซอร์ทั้งหมดไม่รองรับแอตทริบิวต์ สำหรับอุปกรณ์ iOS อุปกรณ์เหล่านี้ไม่รองรับautoplayรูปทรงหรือรูปแบบใด ๆ ใน iOS 5 ดังนั้นฉันจึงใช้รูปภาพสำรองสำหรับมือถือ ขอบคุณอีกครั้ง.
stefmikhail

10
การใช้ <video loop = "true"> ไม่ถูกต้อง w3.org/TR/html-markup/video.html - ให้ใช้ <video loop = "loop"> หรือแค่ <video loop> - กฎนี้มีไว้สำหรับแท็ก HTML5 เกือบทั้งหมด (ทั้ง tagname หรือ tagname = "tagname" สำหรับ XHTML5)

@vaxquis ขอบคุณสำหรับการอัปเดตคุณสามารถแก้ไขการเปลี่ยนแปลง api ได้ในครั้งต่อไป!
longi

5
ไม่มีปัญหาเพื่อนยินดีให้ความช่วยเหลือเสมอ ถึงกระนั้นฉันจะไม่ผสมแอตทริบิวต์ประเภท XHTML 'autoplay = "เล่นอัตโนมัติ" กับ HTML-type' loop '- ฉันจะใช้ <video ... autoplay loop> ซึ่งแยกวิเคราะห์ได้เป็น HTML5 หรือ <video .. . autoplay = "autoplay" loop = "loop"> แยกวิเคราะห์ได้เป็น HTML5 หรือ XHTML5 รูปแบบการผสมทำให้มาร์กอัปที่ยังคงไม่ถูกต้องเป็น XHTML แต่ใช้คำละเอียดสำหรับ HTML

1
โดยทั่วไปautoplayจะใช้งานได้เฉพาะใน Safari หากคุณใช้muted: webkit.org/blog/7734/auto-play-policy-changes-for-macos
andreyrd

40

เมื่อวันที่เมษายน 2018 Chrome (พร้อมกับเบราว์เซอร์อื่น ๆ ที่สำคัญหลาย ๆ คน) ตอนนี้ต้องmutedแอตทริบิวต์เกินไป

ดังนั้นคุณควรใช้

<video width="320" height="240" autoplay loop muted>
  <source src="movie.mp4" type="video/mp4" />
</video>

15

สำหรับ iPhone จะใช้งานได้หากคุณเพิ่ม playinline ด้วยดังนั้น:

<video width="320" height="240" autoplay loop muted playsinline>
  <source src="movie.mp4" type="video/mp4" />
</video>

อุปกรณ์ประกอบฉากสำหรับ JSX:autoPlay loop muted playsInline
pomber

2

คุณสามารถทำได้สองวิธีต่อไปนี้:

1) การใช้loopแอตทริบิวต์ในองค์ประกอบวิดีโอ (กล่าวถึงในคำตอบแรก):

2) และคุณสามารถใช้งานendedสื่อ:

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

    newVideo.play();

});
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.