在HTML5中播放无限循环视频

ste*_*ail 82 video html5 video-streaming html5-video

我希望将视频放在HTML5页面中,该页面将在页面加载时开始播放,一旦完成,就会循环回到开头而不会中断.视频也应该具有任何相关的控制,以及或者是兼容所有"现代"的浏览器,或有填充工具的选项.

以前我会通过Flash和我这样做FLVPlayback,但我宁愿Flash在HTML5领域避开.我想我可以使用javascript setTimeout创建一个平滑的循环,但我应该用什么来嵌入视频本身?那里有什么东西会以这种方式传输视频FLVPlayback吗?

lon*_*ngi 138

循环属性应该这样做:

<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>
Run Code Online (Sandbox Code Playgroud)

如果你对loop属性有问题(就像我们过去那样),请监听videoEnd事件并play()在触发时调用该方法.

注1:我不确定Apple的iPad/iPhone上的行为,因为它们有一些限制autoplay.

注2:loop="true"并且 autoplay="autoplay"已弃用

  • 使用<video loop ="true">******http://www.w3.org/TR/html-markup/video.html - 使用<video loop ="loop">或只是<video loop > - 此规则适用于几乎所有HTML5标记(对于XHTML5,只是标记名或标记名="标记名") (10认同)
  • 没问题,交配,总是很乐意提供帮助.不过,我不会将XHTML类型的属性'autoplay ="autoplay"与HTML类型的'循环'混合在一起 - 我会使用<video ... autoplay loop>,可以解析为HTML5或<video .. .autoplay ="autoplay"loop ="loop">,可解析为HTML5或XHTML5.混合样式使得标记仍然作为XHTML无效,但对HTML不必要的冗长. (5认同)
  • 确实是很好的建议,先生。我最终使用“javascript”来监听“videoEnd”事件,并循环回到开头,据我所知,并非所有浏览器都支持“loop”属性。对于 iOS 设备,iOS 5 不支持任何形式的“自动播放”,因此我只使用了移动设备的后备图像。再次感谢。 (2认同)
  • 一般来说,如果你也使用了 `muted`,`autoplay` 只适用于 Safari:https://webkit.org/blog/7734/auto-play-policy-changes-for-macos/ (2认同)

小智 22

对于 iPhone,如果您还添加了 playinline,它就可以工作,因此:

<video width="320" height="240" autoplay loop muted playsinline>
  <source src="movie.mp4" type="video/mp4" />
</video>
Run Code Online (Sandbox Code Playgroud)


mic*_*ah5 19

截至2018年4月,Chrome(以及其他几个主流浏览器)现在也需要muted属性.

因此,你应该使用

<video width="320" height="240" autoplay loop muted>
  <source src="movie.mp4" type="video/mp4" />
</video>
Run Code Online (Sandbox Code Playgroud)


asm*_*mud 5

您可以通过以下两种方式执行此操作:

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();

});
Run Code Online (Sandbox Code Playgroud)