Chrome视频自动播放

5lhxktic  于 2023-06-19  发布在  Go
关注(0)|答案(7)|浏览(173)

在Chrome和Firefox最近更新后,不再支持自动播放视频--我试图添加一些代码来在启动时播放,但似乎不起作用?

var vid = document.getElementById("attractor"); 

    function playVid() { 
        vid.play(); 
    }

有没有人找到一个解决办法?
我们做了很多触摸屏互动,并依靠这种方法为我们的吸引器视频。

cygmwpex

cygmwpex1#

autoplay只有默认设置为静音时才会生效,如下图所示。

<video autoplay muted>
      <source src="video.mp4" type="video/mp4"></source>
   </video>

不用担心,用户可以在html5视频元素中取消视频静音。

btxsgosb

btxsgosb2#

我发现了一个自动播放视频和避免js错误的好方法。

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();
});
<video id="my-video" src="https://sample-videos.com/video123/mp4/240/big_buck_bunny_240p_2mb.mp4">

这段代码尝试用声音启动自动播放,如果不可能,它将静音视频并自动播放不带声音的视频。我认为这是一种最佳的方法,可以防止JS错误。

bnlyeluc

bnlyeluc3#

根据我自己的观察和许多文章,比如this one,Chrome现在阻止视频自动播放,除非它们被静音。启用声音的视频只能通过用户交互来播放,例如一个鼠标点击或触摸点击,不能由JavaScript启动。
通过这样做,谷歌希望“(使)自动播放更符合用户的期望,[...]给予用户对音频有更多的控制权”1(https://arstechnica.com/tech-policy/2017/09/google-chrome-block-auto-play-video/)

wfypjpf4

wfypjpf44#

我想起来了....在地址栏里输入这个:

chrome://flags/#autoplay-policy

然后选择“不需要用户手势”
...这显然只会使它在您的电脑上工作!

3htmauhk

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播放视频:

function onPlayerReady(event) {
   event.target.playVideo();
}

1.使用iframe和youtube视频时,请记住使用嵌入URL,而不是标准视频URL https://www.youtube.com/embed/{video_id}

  1. YouTube视频管理员在这里:https://www.youtube.com/my_videos(我永远找不到YouTube视频管理器在不断变化的界面!)
  • 推荐解决方案:*

1.在vimeo注册,上传您的视频
1.转到视频设置,找到“嵌入”标签https://vimeo.com/manage/{video_id}/embed并设置您的嵌入视频
1.嵌入iframe:

<iframe frameborder="0"
  height="100%"
  width="100%"
  id="background-video"
  src="https://player.vimeo.com/video/356828095?autoplay=1&loop=1&autopause=0"
  allow="autoplay; fullscreen">
</iframe>

这是自动播放和循环。4.使用css设置您的视频大小,f.e. width: 100%。现在你不想让视频周围有黑色的框架,所以让我们调整iframe的大小,让我们使高度与宽度成比例。在我的例子中,视频是1920 x1080 px:

<script type="text/javascript">
var width = window.innerWidth;
var height = (width * 1080) / 1920

document.getElementsByTagName('iframe')[0].style.height = height + 'px';
</script>

我的视频作为页面的背景循环播放。我禁用了像这样的鼠标事件(在你的CSS样式中):

#background-video {
  pointer-events: none;
}

让我知道如果我错过了什么,我会更新这些说明!

fumotvh3

fumotvh36#

我有两个解决方案,不需要任何属性或iframe,它可以自动播放音频/视频与声音也,请跟随我:

1. WebRTC解决方案:

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

它将要求用户提供他们的***麦克风权限***,他们必须单击“允许”一次,然后才允许您播放任何有/没有声音的内容。它的工作是因为只要你捕捉到任何东西,那么你就被允许玩所有东西。来源:autoplay-restrictions-and-webrtc

2.手动解决方案:如果用户出于某种原因不想给予他们的麦克风权限,那么只有你可以做的事情来说服他们,你只需要这个权限来自动播放媒体,这与他们的麦克风无关,因为媒体一开始播放就停止它。否则,指示他们从您的网站设置中允许*声音权限,这也将授予永久播放带声音或不带声音的媒体的权限。

经过两天的连续搜索,在放弃自动播放音频/视频(有/没有声音)的希望之前,我想出了这两个解决方案,它可以在没有任何用户手势的情况下简单地工作。我希望它能解决任何自动播放相关的问题后,新的严格政策部署的谷歌。阅读更多:autoplay-policy-changes

lmvvr0a8

lmvvr0a87#

我花了7天7夜重写youtube代码,就是因为这些自动播放的问题。Google完全忽略了Chrome的所有更改:

https://developer.chrome.com/blog/autoplay/

基于Chrome的浏览器(个人使用Edge 115)无法正确实现自动播放限制。首先,让我们尝试一些简单的事情:

<video controls = "" class="video-stream html5-main-video" style="width: 480px; height: 640px" src="file:///c:/copy/1.mp4"></video>

播放:

Document.prototype.getElementsByTagName.call(document, "video")[0].play()

如果策略中的“AutoplayAllowed”设置为0,则不播放视频。经过一番折腾,我终于写下了这句话:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE]

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies]

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft]

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Edge]
"AutoplayAllowed"=dword:00000000

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Edge\AutoplayAllowlist]
"1"="file:///*"
"2"="https://www.youtube.com"

现在本地视频可以播放,但是youtube上的自动播放例外,我对此感觉不太好。另外,出于纯粹的学术兴趣,让我们尝试禁用自动播放的youtube。这就是发生的事情(请记住,谷歌曾信誓旦旦地承诺保护Chrome用户免受自动播放等烦恼):

  • 如果你通过地址栏打开一个URL来打开YouTube视频,视频将无法播放
  • 如果你有一个youtube页面已经打开,并点击页面上的视频/短片视频,新打开的视频确实播放
  • 如果你在Chrome浏览器中添加了一个指向包含视频页面的youtube书签,并打开它:
  • 如果您当前在youtube页面上使用书签,视频播放
  • 如果您在使用书签时不在youtube页面上,则视频不会在打开的页面上播放

如果你在youtube上打开一个视频,视频暂停(由于Chrome自动播放限制或因为你弄乱了他们的代码,否则它将自动播放),你第一次进入视频全屏模式,视频突然开始播放,真的很烦人。我找到了实现它的代码(在desktop_polymer_enable_wil_icons.js中),这里是谷歌的逻辑,他们认为如果用户全屏播放视频,他也打算立即播放。
如果你打开一个youtube短片页面,由于chrome的限制,第一个短片视频没有播放,如果你没有首先手动播放第一个视频,然后向下滚动页面,所有其他短片视频将被破坏(事件侦听器丢失,短片视频上的播放按钮工作,但点击短片视频背景什么也不做)。显然,谷歌的左手YouTube开发者不知道他们的右手Chrome开发者在做什么。
底线是:如果你想阻止自动播放,你必须自己重写代码,将其注入到页面中,或者通过浏览器代理重定向到你自己的脚本

相关问题