视频自动播放在 Safari 和 Chrome 桌面浏览器中不起作用

IT技术 javascript html google-chrome safari webkit
2021-01-23 09:23:32

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

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

6个回答

我能得到的最好的解决方法是在 </video>

<script>
    document.getElementById('vid').play();
</script>

...不漂亮,但不知何故有效。

更新 最近很多浏览器只能在关闭声音的情况下自动播放视频,因此您也需要为muted视频标签添加属性

<video autoplay muted>
...
</video>
或者你可以使用 jQuery $("videoID").get(0).play(); stackoverflow.com/questions/4646998/...
2021-03-14 09:23:32
还是问题,如果它没有静音developers.google.com/web/updates/2017/09/...
2021-03-21 09:23:32
如果没有用户交互,这将不再起作用 AFAIK
2021-03-21 09:23:32
要在 Safari 移动设备上工作,我还必须包括 playsinline
2021-03-21 09:23:32
或者像这样: $("video[autoplay]").each(function(){ this.play(); });
2021-03-24 09:23:32

play()按照其他答案的建议使用 jQuery或 DOM 操作,它在 Android 版 Chrome(56.0 版)中仍然无法正常工作(视频未自动播放)。

按本岗位developers.google.com,从Chrome浏览器53,自动播放选项是由浏览器的尊重,如果视频静音

因此,autoplay muted在视频标签中使用属性可以让视频在 Chrome 浏览器中自动播放 53 版。

摘自上述链接:

视频静音自动运行,如果同时为Android是Chrome支持如53版一旦映入眼帘的将自动开始播放的视频元素autoplay,并muted设置[...]

<video autoplay muted>
    <source src="video.webm" type="video/webm" />
    <source src="video.mp4" type="video/mp4" />
</video>
  • iOS 10 及更高版本上的 Safari 支持静音自动播放。
  • Firefox 和 UC 浏览器已经在 Android 上支持自动播放,无论是否静音:它们不会阻止任何类型的自动播放。
我在 Safari 11 中遇到了这个问题,其中背景视频(无音频)不会自动播放。添加mutedautoplay成功。谢谢!
2021-03-21 09:23:32
那么为什么自动播放,带声音,适用于 youtube?自该网站成立以来,它一直以这种方式运作。
2021-04-11 09:23:32

Google 刚刚更改了自动播放视频的政策,必须是 muted

你可以在这里查看

所以只需添加静音

<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>
John Pallett对新政策评论他是 Google Chrome 的产品经理和Media Muter
2021-04-02 09:23:32

碰巧桌面上的 Safari 和 Chrome 不喜欢围绕视频标签的 DOM 操作。即使在初始页面加载后视频标记周围的 DOM 发生更改时触发了 canplaythrough 事件,它们也不会在设置 autoplay 属性时触发播放顺序基本上我遇到了同样的问题,直到我删除了视频标签周围的 .wrap() jQuery,然后它按预期自动播放。

很好的说法,它不适用于 .wrap()。但是,据我所知,代码需要 .get(0) 才能工作: $("#vid").get(0).play();
2021-03-14 09:23:32
2017 年 10 月,尽管标签中有属性,但视频不自动播放仍然是 Safari 中的一个问题。按照 mattsoave/pmrotule 的建议使用 [0].play() 解决了这个问题。
2021-04-03 09:23:32
@mattsoave.get(0)或只是$('#vid')[0].play()
2021-04-05 09:23:32

对我来说,问题是muted需要在video标签中添加属性IE:

<video width="1920" height="1980" src="video/Night.mp4"
type="video/mp4" frameborder="0" allowfullscreen autoplay loop
muted></video>`
如果我添加静音禁用声音,则在 Crome 上。我不要这个
2021-03-27 09:23:32
适用于 Windows8 上的最新 Chrome
2021-04-10 09:23:32