gpt4 book ai didi

android - Angular 2+组件内的Chrome(Android)视频自动播放

转载 作者:太空宇宙 更新时间:2023-11-03 11:27:31 24 4
gpt4 key购买 nike

什么有效:

如果我将带有“自动播放”(见下文)的视频标签放入 Angular 2+ 组件的模板中,目的是在移动设备上自动播放:

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

的作用:

  • 将其移动到 index.html(在 Angular 组件之外)
  • 从组件内将其附加到主体:

    window.addEventListener('load', () => {
    document.body.innerHTML += "<video autoplay muted loop>\n" +
    " <source src=\"path/to/video.mp4\" type=\"video/mp4\" />\n" +
    "</video>";
    });
  • 在组件模板中包含视频,启用“用户控件”,并手动触摸视频上的播放按钮(即不自动播放)

理论:

我认为这不是视频路径无效的问题,因为我可以手动点击“播放”按钮。

根据 herehere ,如果 (1) 视频静音,并且 (2) 视频“可见”,则应允许在移动设备上自动播放。我读到,在这种情况下,“可见”或多或少被定义为“附加到 DOM”,而不是至少在几个地方的“显示:无”。

我最好的理论是 Angular 2+ 将组件粘贴在某种“Shadow DOM”(或类似的)中,这导致移动版 Chrome 认为它不可见。我尝试将组件设置为 encapsulation: ViewEncapsulation.None 以查看是否有所不同,但结果相同。

此外,如果我尝试针对“loaded”或“canplaythrough”事件设置事件监听器并手动调用 videoElement.play(),那么我会得到:DOMException: play( ) 只能由用户手势启动。如果我在 devtools 控制台中调用相同的函数(通过 USB 连接到移动设备),那么它播放。

最后的想法:

看来 Angular 很可能是我的障碍。是否有任何已知的 Angular 设置或变通方法可以让我在 Android Chrome 上的 Angular 2+ 组件中自动播放视频?感谢您的帮助。

(p.s.:在 S.O. 和其他地方有大约一百万个关于在移动 Chrome 上自动播放视频的问题,但它们似乎都没有解决在 Angular 组件或类似组件中执行此操作的问题)

最佳答案

我一直在搜索这个问题,我把 muted 属性放在这样:

[muted]="true" 而不仅仅是 muted

现在可以了

<video [muted]="true" autoplay>
<source src="path/to/video.mp4" type="video/mp4" />
</video>

Chrome 有一个策略,如果用户没有首先与页面交互,则不允许视频自动播放,但是如果它的静音视频 chrome 允许它。这里的问题是,由于某种原因,当您将 muted 放入 angular 时,muted 值变为 false。

关于android - Angular 2+组件内的Chrome(Android)视频自动播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48856562/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com