const myVideo = document.getElementById('my-video');
// Not all browsers return promise from .play().
const playPromise = myVideo.play() || Promise.reject('');
playPromise.then(() => {
// Video could be autoplayed, do nothing.
}).catch(err => {
// Video couldn't be autoplayed because of autoplay policy. Mute it and play.
myVideo.muted = true;
myVideo.play();
});
navigator.mediaDevices.getUserMedia({ audio: true }).then(function (stream) {
vid.play(); // play your media here then stop the stream when done below...
stream.getTracks().forEach(function (track) { track.stop(); });
});
7条答案
按热度按时间cygmwpex1#
autoplay只有默认设置为静音时才会生效,如下图所示。
不用担心,用户可以在html5视频元素中取消视频静音。
btxsgosb2#
我发现了一个自动播放视频和避免js错误的好方法。
这段代码尝试用声音启动自动播放,如果不可能,它将静音视频并自动播放不带声音的视频。我认为这是一种最佳的方法,可以防止JS错误。
bnlyeluc3#
根据我自己的观察和许多文章,比如this one,Chrome现在阻止视频自动播放,除非它们被静音。启用声音的视频只能通过用户交互来播放,例如一个鼠标点击或触摸点击,不能由JavaScript启动。
通过这样做,谷歌希望“(使)自动播放更符合用户的期望,[...]给予用户对音频有更多的控制权”1(https://arstechnica.com/tech-policy/2017/09/google-chrome-block-auto-play-video/)
wfypjpf44#
我想起来了....在地址栏里输入这个:
然后选择“不需要用户手势”
...这显然只会使它在您的电脑上工作!
3htmauhk5#
1.将
allow="autoplay;"
添加到iframe中,如下所示<iframe allow="autoplay;" ... >
1.当使用html5
video
标签时,我注意到视频必须静音才能自动播放。带声音的视频不想播放。下面是如何嵌入html5视频https://www.w3schools.com/html/html5_video.asp。如果使用此方法,您可以下载Miro Video Converter http://www.mirovideoconverter.com/使用它来编码您的视频。它做了一个惊人的工作,在缩小视频!1.当嵌入youtube或vimeo时,添加
?autoplay=1
,在vimeo中也添加autopause=0
到URL,如下所示:https://player.vimeo.com/video/{video_id}?autoplay=1&loop=1&autopause=0
,1.如果您使用youtube并且仍然有问题,请使用iframe API https://developers.google.com/youtube/iframe_api_reference并使用javascript播放视频:
1.使用iframe和youtube视频时,请记住使用嵌入URL,而不是标准视频URL
https://www.youtube.com/embed/{video_id}
1.在vimeo注册,上传您的视频
1.转到视频设置,找到“嵌入”标签
https://vimeo.com/manage/{video_id}/embed
并设置您的嵌入视频1.嵌入iframe:
这是自动播放和循环。4.使用css设置您的视频大小,f.e.
width: 100%
。现在你不想让视频周围有黑色的框架,所以让我们调整iframe的大小,让我们使高度与宽度成比例。在我的例子中,视频是1920 x1080 px:我的视频作为页面的背景循环播放。我禁用了像这样的鼠标事件(在你的CSS样式中):
让我知道如果我错过了什么,我会更新这些说明!
fumotvh36#
我有两个解决方案,不需要任何属性或iframe,它可以自动播放音频/视频与声音也,请跟随我:
1. WebRTC解决方案:
它将要求用户提供他们的***麦克风权限***,他们必须单击“允许”一次,然后才允许您播放任何有/没有声音的内容。它的工作是因为只要你捕捉到任何东西,那么你就被允许玩所有东西。来源:autoplay-restrictions-and-webrtc
2.手动解决方案:如果用户出于某种原因不想给予他们的麦克风权限,那么只有你可以做的事情来说服他们,你只需要这个权限来自动播放媒体,这与他们的麦克风无关,因为媒体一开始播放就停止它。否则,指示他们从您的网站设置中允许*声音权限,这也将授予永久播放带声音或不带声音的媒体的权限。
经过两天的连续搜索,在放弃自动播放音频/视频(有/没有声音)的希望之前,我想出了这两个解决方案,它可以在没有任何用户手势的情况下简单地工作。我希望它能解决任何自动播放相关的问题后,新的严格政策部署的谷歌。阅读更多:autoplay-policy-changes
lmvvr0a87#
我花了7天7夜重写youtube代码,就是因为这些自动播放的问题。Google完全忽略了Chrome的所有更改:
基于Chrome的浏览器(个人使用Edge 115)无法正确实现自动播放限制。首先,让我们尝试一些简单的事情:
播放:
如果策略中的“AutoplayAllowed”设置为0,则不播放视频。经过一番折腾,我终于写下了这句话:
现在本地视频可以播放,但是youtube上的自动播放例外,我对此感觉不太好。另外,出于纯粹的学术兴趣,让我们尝试禁用自动播放的youtube。这就是发生的事情(请记住,谷歌曾信誓旦旦地承诺保护Chrome用户免受自动播放等烦恼):
如果你在youtube上打开一个视频,视频暂停(由于Chrome自动播放限制或因为你弄乱了他们的代码,否则它将自动播放),你第一次进入视频全屏模式,视频突然开始播放,真的很烦人。我找到了实现它的代码(在desktop_polymer_enable_wil_icons.js中),这里是谷歌的逻辑,他们认为如果用户全屏播放视频,他也打算立即播放。
如果你打开一个youtube短片页面,由于chrome的限制,第一个短片视频没有播放,如果你没有首先手动播放第一个视频,然后向下滚动页面,所有其他短片视频将被破坏(事件侦听器丢失,短片视频上的播放按钮工作,但点击短片视频背景什么也不做)。显然,谷歌的左手YouTube开发者不知道他们的右手Chrome开发者在做什么。
底线是:如果你想阻止自动播放,你必须自己重写代码,将其注入到页面中,或者通过浏览器代理重定向到你自己的脚本