我花了很多时间试图弄清楚为什么视频会像这样嵌入:

<video height="256" loop autoplay muted controls id="vid">
         <source type="video/mp4" src="video_file.mp4"></source>
         <source type="video/ogg" src="video_file.ogg"></source>
</video>

一旦页面在FireFox中加载,就开始自动播放,但不能在基于Webkit的浏览器中自动播放。这只发生在一些随机的页面上。到目前为止我还没有找到原因。我怀疑一些未关闭的标签或CMS编辑器创建的大量JS。


当前回答

在React + Chrome中,最好导入视频,而不是将其作为src给。

import React from 'react';
import styled from 'styled-components';
import video from './videos.mp4';
const StyledVideo = styled.video`
width: 100%;
height: 100vh;
object-fit: cover;
`
const BackgroundVideo = () => {
return (
    <StyledVideo autoPlay loop muted>
        <source src={video} type="video/mp4" />
    </StyledVideo>
);
}

还记得

视频在同一个目录下,导入即可。 要自动播放,视频在背景,使用自动播放和静音道具都有。

其他回答

我能得到的最好的修复是在</video>之后添加这段代码

<script>
    document.getElementById('vid').play();
</script>

...虽然不漂亮,但还是管用的。

更新 最近许多浏览器只能自动播放视频的声音关闭,所以你需要添加静音属性的视频标签

<video autoplay muted>
...
</video>

谷歌更新了自动播放策略。自动播放只能在静音模式下工作。 查看链接https://developers.google.com/web/updates/2017/09/autoplay-policy-changes

我把我的声音调成静音自动播放。 我认为谷歌规则不会让chrome自动播放,除非它是静音的。

<video id="video" controls autoplay muted
        border:0px solid black;"
        width="300"
        height="300">
    <source src="~/Videos/Lumen5_CTAS_Home2.mp4"
            type="video/mp4" />
    Your browser does not support the video tag.
    Please download the mp4 plugin to see the CTAS Intro.
</video>

对于angular,你必须静音它,并像下面这样在ngAfterViewInit()中播放它

<video height="256" loop autoplay muted controls id="vid" #videoRef>
         <source type="video/mp4" src="video_file.mp4"></source>
         <source type="video/ogg" src="video_file.ogg"></source>
</video>
 ​@ViewChild('videoRef', { static: true }) videoRef!: ElementRef

​ngAfterViewInit(): void {
  ​const media = this.videoRef.nativeElement
  ​media.muted = true 
  ​media.play() 
​ } 

试试这个:

    <video height="256" loop autoplay controls id="vid">
     <source type="video/mp4" src="video_file.mp4"></source>
     <source type="video/ogg" src="video_file.ogg"></source>

我通常都是这么做的。循环、控件和自动播放不需要值,它们是布尔属性。