Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Video Chrome中的静音自动播放仍不工作_Video_Html5 Video - Fatal编程技术网

Video Chrome中的静音自动播放仍不工作

Video Chrome中的静音自动播放仍不工作,video,html5-video,Video,Html5 Video,我无法让chrome自动播放视频。我已经将视频设置为静音,它会在Safari和Firefox中自动播放,但不会在chrome中播放 <video autoplay muted poster="path to video" id="bgvid"> <source src="assets/uploads/hero/livePhotoNoSound.mp4" type="video/webm"> <sou

我无法让chrome自动播放视频。我已经将视频设置为静音,它会在Safari和Firefox中自动播放,但不会在chrome中播放

            <video autoplay muted poster="path to video" id="bgvid">

        <source src="assets/uploads/hero/livePhotoNoSound.mp4" type="video/webm">

            <source src="assets/uploads/hero/livePhotoNoSound.mp4" type="video/mp4">

        </video>    


我想让视频自动开始播放。目前视频已加载,但仍处于静止状态。我所读到的一切都表明,只要它静音,它就应该播放,但这不是我得到的结果。

下面的示例,在对代码进行最小更改的情况下,在Mac(10.12.6)上的chrome(版本62.0.3202.94)中播放:


您可以在视频标签上使用
oncanplay=“this.muted=true”

<video  muted loop autoplay oncanplay="this.muted=true">
    <source src="your src" type="video/mp4">
    Your browser does not support HTML5 video.
</video>

您的浏览器不支持HTML5视频。

虽然@richard lindner的解决方案对我不起作用,但它让我走上了正确的道路

在我的例子中,虽然存在
mute
属性,但Chrome忽略了它,并以静默方式失败,除非它也在JavaScript中显式设置,例如

var video = document.getElementById("myVideo");
video.oncanplaythrough = function() {
    video.muted = true;
    video.play();
}
有趣的是,使用javascript强制自动播放,但匹配
video.muted=true
行确实会在控制台中显示自动播放策略错误,这表明Chrome在某些情况下确实忽略了
muted
属性。在我看来,这就像是Chrome自动播放策略的一个bug


请注意,该错误仅在未缓存视频时发生。如果是缓存的,则自动播放按预期工作。

对于那些在JavaScript中创建元素的人,下面是我用来在Chrome中正确配置元素以自动播放的JavaScript函数:

function configureVideoElementForAutoplay (videoElement) {
  videoElement.setAttribute('playsinline', '');
  videoElement.setAttribute('muted', '');
  videoElement.setAttribute('autoplay', '');
  videoElement.muted = true;
}
例如:

let vid = document.createElement('video');
configureVideoElementForAutoplay(vid);

感谢@Jonny Green指出了直接“静音”财产转让的必要性。

主要答案对我起到了作用——但万一有人想让它在苹果手机上工作,你必须使用“playsinline”属性才能工作。例如:



你能发布一些工作代码来测试功能吗(至少在Firefox和Chrome中)?我用路径更新了上面的代码。这就是你的意思吗?这里的代码应该可以工作,但要确保数据保护程序没有打开。如果“数据保存器”处于打开状态,则不会播放。数据保存器未处于打开状态。这在我的chrome或者任何chrome上都不起作用。我最终使用jQuery强制播放视频。也许不是最好的解决方案,但它现在起作用了$(“#bgvid”)[0]。播放();这也可能是视频的问题…在这里遇到了类似的问题,无需依赖events/.play即可修复。我可以在chrome中查看上面的视频,但即使我将完全相同的代码放入我的网站,chrome也拒绝播放。这是令人沮丧的,因为没有错误。无论出于什么原因,我的网站都无法运行。如果与上面的代码(包括视频URL)完全相同,然后听起来你的网站可能有一些更复杂的视频播放器在使用,这是在页面中寻找视频元素和管理播放。我得到完全相同的问题,没有使用第三方视频player@timstermatic-您的意思是上面的代码片段将不起作用吗?我只是在Chrome浏览器中再次尝试,它对我来说很好。@mick,我的意思是当我把上面的代码放在我自己的页面上时。然而我发现了我的问题。视频位于滑块中,无法自动播放已变异的DOM元素中的视频。如果我在一个样板HTML模板中运行这个例子,它会非常好地工作。他们真的让这件事变得很困难。谢谢。这就解决了问题。你是对的,它看起来像一个bug。奇怪的是,这似乎是一个问题,即使是VideoJS。我现在有最新的版本,7.2.3。在VideoJS的回调中调用
player.volume()
如果没有
video.muted=true
,则无法工作,其中
video
是视频元素。+1。我可以确认,在HTML中简单地分配“mute”属性对我来说不起作用,但添加@Jonny Green建议的显式属性分配确实起作用。我很反感这样做完美。就像谷歌Chrome试图成为IE8的下一个版本。。。