35

标题几乎说明了一切。我有一个视频在到达页面时自动开始播放。

在 HTML 代码中,我设置了 muted="muted"。奇怪的部分来了。查看控件时,它显然已静音,但仍在播放音乐并且可以听到。即使当我查看 W3Schools 上的 HTML5 视频示例时,它也会在静音时播放音乐。

有什么办法,例如通过 jQuery 绕过这个?我在其中有一条 jQuery 行,它将静音粘贴到视频中,但这没有任何效果。

这是使用的 HTML 代码:

<video id="video" width="640px" height="350px" autoplay="autoplay" loop="loop" controls="controls" muted="muted">
            <source src="intouchables.f4v" type="video/mp4">
            Your browser does not support the video tag.
        </video>

希望你能帮助我。jQuery 行如下:

$("video").prop('静音', true);

提前致谢。

4

10 回答 10

45

在 Angular 的情况下,可以尝试[muted]="'muted'",它对我有用。

<video id="video" style="width:100%; height:100%" autoplay [muted]="'muted'" loop>
  <source src="./../../assets/video/model-video.mp4" type="video/mp4">
</video>
于 2019-05-01T18:13:59.967 回答
38

我不完全确定为什么在标签中muted定义属性时出现故障。video但是,这是您可以做的:

首先,muted="muted"从视频标签中删除属性。保持简单:

<video id="video" width="640px" height="350px" autoplay="autoplay" loop="loop" controls="controls">
    <source src="intouchables.f4v" type="video/mp4">
    Your browser does not support the video tag.
</video>

现在,定义一个在加载页面时使视频静音的函数。

window.onload = function () {
    var element = document.getElementById('video');
    element.muted = "muted";
}

我已经验证了这一点,并且有效。

于 2013-01-02T07:27:22.873 回答
28

我的回答中没有真正的新答案——只是试图更新这个问题,并希望避免人们像我刚刚做的那样浪费一整天的时间。

据我所知(特别是因为这个问题太老了),当视频被动态添加到页面时,muted从未起作用。既然muted不起作用,那么muted autoplay也不会起作用。

我认为发生的情况是浏览器在页面加载时做出了某些决定,并且由于某些非常奇怪的原因,即使页面具有muted属性,稍后添加到页面的视频也不会静音。我认为这是 Chrome 中的一个错误,在 Safari 中不会发生在我身上——但看起来我们现在被困住了。

谷歌关于自动播放/静音的博客条目只有一年的历史,并提供了以下见解:

Chrome 的自动播放策略很简单:

  • 始终允许静音自动播放。
  • 在以下情况下允许自动播放声音:
    • 用户与域进行了交互(单击、点击等)。
    • 在桌面上,用户的媒体参与指数阈值已被超过,这意味着用户之前播放过有声视频。
    • 在移动设备上,用户已将网站添加到他或她的主屏幕。
  • 顶级框架可以将自动播放权限委托给其 iframe 以允许自动播放声音。

只少了一件大事!

  • “静音”HTML 属性仅在初始加载时 HTML 中存在视频时生效。这也适用于“自动播放静音”视频。

那么这有什么影响:

  • 如果以编程方式播放没有声音的视频,则必须先将其静音。因此,如果将动态视频添加到页面,则必须video.muted = true在将其添加到 DOM 之后(或在播放之前)显式设置。
  • 如果您尝试以video.play()编程方式执行(例如,当有人向下滚动经过静音视频并且您希望它播放时),则必须先将视频静音。

我在 Angular 中遇到了这个问题,并花了太多时间假设它与我使用模板的事实有关,或者与 Angular 相关。

我在 StackBlitz 上做了一个测试应用。您需要取消注释该行// video.muted = true以使其正常工作。

https://stackblitz.com/edit/angular-ze4t9y

要实现的其他重要事项是:

  • 即使视频实际上没有声音,也必须将其静音。如果需要,请使用“兔子”视频进行测试。
  • 博客中概述的较新的“媒体参与”规则可能会在测试页面时让您感到困惑,因为您将与该页面进行交互。您必须做的是关闭浏览器,或以隐身模式打开一个新窗口 - 以重置此参与规则(请参阅博客条目)。

如果您在用户没有首先“参与”页面时尝试播放非静音视频,您将在浏览器中看到的错误如下所示。如果您在非静音视频中没有看到此消息,则 Chrome 可能已允许该视频播放,因为您与该页面进行了交互。

在此处输入图像描述

最后,如果您使用的是 Angular(所有内容都是动态添加的),则可以使用以下方法使视频静音:

 @ViewChild('bunnyVideo', { read: ElementRef }) bunnyVideo: ElementRef;

然后当你想玩它时:

 const video: HTMLVideoElement = this.bunnyVideo.nativeElement;

 // explicitly mute it...
 video.muted = true;

 // ...before attempting to play
 video.play().catch((err) => {
    alert('video error ' + err);
 });
于 2018-08-08T20:29:50.787 回答
13

这对我来说很好。

<video oncanplay="this.muted=true" id="video" width="640px" height="350px" autoplay="autoplay" loop="loop" controls="controls">
            <source src="intouchables.f4v" type="video/mp4">
            Your browser does not support the video tag.
</video>
于 2019-02-07T12:00:36.417 回答
6

看起来这个静音在 chrome 64 中停止工作。在 63 中仍然有效。

于 2018-01-29T22:21:15.883 回答
4
<video preload= "true" autoplay = "autoplay" loop = "loop" muted>
    <source src = "video/Real-Estate.mp4" type = "video/mp4">
</video>
于 2015-02-02T15:21:47.757 回答
1

要直接通过 HTML5 而不是 jQuery 静音,您也可以volume="0"在 video 标签内使用,即:

<video preload="true" autoplay="" volume="0" poster="img/example.jpg">
于 2015-04-20T03:21:25.980 回答
0

确保在制作视频时将音频编解码器设置为 AAC。我在使用默认设置为 AC3 的 OpenShot 时遇到了同样的问题。

于 2019-01-18T06:52:42.130 回答
0

对于 html5 使用:

<video controls loop muted height="" width=""  >

  <source src="" type="video/(put format here ex .mp4)" />
<source src="" type="video/(put another format of same video here if there is one ex .wav)" />
Your browser does not support the HTML5 element.
</video>

这是 w3c 的好去处。

1

于 2020-09-09T22:11:35.823 回答
0
<video class="" autoplay loop [muted] = "'muted'">
    <source src= "video url/video path" type = "video/mp4">
</video>

// 尝试这个。它在我的设备上正常工作。当您的视频有声音时,浏览器(谷歌)会尝试阻止视频。所以视频不会自动播放。因此,请尝试将音频静音。只提到静音它对我不起作用。所以我尝试了绑定方法。现在它和我一起工作得很好。我建议尝试一次

于 2021-10-29T12:15:08.500 回答