我花了很多时间试图弄清楚为什么视频会像这样嵌入:

<video height="256" loop autoplay muted controls id="vid">
         <source type="video/mp4" src="video_file.mp4"></source>
         <source type="video/ogg" src="video_file.ogg"></source>
</video>

一旦页面在FireFox中加载,就开始自动播放,但不能在基于Webkit的浏览器中自动播放。这只发生在一些随机的页面上。到目前为止我还没有找到原因。我怀疑一些未关闭的标签或CMS编辑器创建的大量JS。


当前回答

我们最近用一个嵌入式视频解决了一个类似的问题,发现自动播放和静音属性对我们的实现来说不够。

我们在代码中添加了第三个“playsinline”属性,它为iOS用户解决了这个问题。

此修复是特定于视频要内联播放。来自https://webkit.org/blog/6784/new-video-policies-for-ios/:

在iPhone上,元素现在将允许内联播放,并且在播放开始时不会自动进入全屏模式。 没有playsinline属性的元素将继续需要全屏模式在iPhone上播放。 当用缩放手势退出全屏时,没有playsinline的元素将继续inline播放。

其他回答

在safari iPhone上,当电池电量不足,iPhone处于低电量模式时,它不会自动播放,即使你在视频html标签上设置了以下属性:自动播放,循环,静音,playsinline。

走一走我发现工作是有用户手势事件触发视频播放:

document.body.addEventListener("touchstart", function () {
    var allVideos = document.querySelectorAll('video');
    for (var i = 0; i < allVideos.length; i++) {
        allVideos[i].play();
    }
},{ once: true });

你可以在webkit网站上阅读更多关于iOS用户手势和视频策略的信息:

https://webkit.org/blog/6784/new-video-policies-for-ios/

谷歌刚刚更改了自动播放视频的策略,必须静音

你可以在这里查看

添加静音

<video height="256" loop="true" autoplay="autoplay" controls="controls" id="vid" muted>
         <source type="video/mp4" src="video_file.mp4"></source>
         <source type="video/ogg" src="video_file.ogg"></source>
</video>

我在iphone的Safari上播放视频时遇到了一个问题。在video标签中添加playsinline属性可以解决这个问题,而且它是有效的!

<video autoplay muted loop playsinline class="someClass">
  <source src="source.mp4" type="video/mp4">
</video>

你也会在Safari和OSX上遇到这个问题,如果你对这个属性playsinline感到困惑,这里是解释。

移动浏览器,playsinline将播放视频的正确位置,而不是默认的全屏播放。

对于OSX上的Safari浏览器,由于网站默认的“自动播放”选项是“带声音停止媒体”,这种策略也会带来权限问题。

这就是为什么我们需要属性静音。

请在自动播放单词前使用静音关键字,这里有一些隐私在2018年4月的变化。 你可以在这里阅读政策

当与静音属性结合时,它为我工作