关于reactjs:React(HTML)视频标记不会在移动设备上自动播放

React (HTML) video tag won't autoplay on mobile devices

我创建了一个jsx变量,将视频嵌入到html中。每隔一个答案都说要包括静音,defaultMuted和playsinline(我已经有了)。这些视频会在我的计算机上以safari,chrome和Firefox的格式自动播放,但无法在移动设备上播放。视频的开始屏幕已加载,但已暂停。我是否需要稍微做些不同,因为我可能正在使用React?

我在iOS 13.3上使用的是iPhone,自动播放功能无法在Safari,Chrome和Firefox中使用,而只能在移动设备上使用。视频均为.mp4(.mov文件也无法使用)。

1
2
3
4
5
6
7
8
var EmbedVideo = function(props) {
    return (
        <video webkit-playsinline playsinline autoplay="autoplay" className={props.className} muted defaultMuted loop>
            <source src={props.src} type="video/mp4" />
            Your browser does not support the video tag.
        </video>
    )
}

更新

因此,当我检查网站的html时,显然没有显示"静音"。节点看起来像这样。实际上缺少一些属性。

1
2
3
4
<video autoplay="" class="video" loop="">
<source src="/videos/my_video.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>

我正在阅读有关静音属性的一些信息,这些属性不能与React一起使用?有人制作了一个看起来像是视频标签的组件,但是发挥了应有的功能(至少对于我来说,播放像gif的视频而言)。我无法正常运行,甚至无法在桌面上自动播放。我只是尝试<VideoTag src={props.src} />,因为我不知道他们的poster变量应该是什么。


使用React时,muted似乎无法正常工作。为了使静音出现在组件中,我必须使用称为dangerouslySetInnerHTML的东西。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
var EmbedVideo = function(props) {
   return (
       <div dangerouslySetInnerHTML={{ __html: `
        <video
          loop
          muted
          autoplay
          playsinline
          src="${props.src}"
          class="${props.className}"
        />,
      ` }}>
   )
}


我认为当您嵌入视频时,请确保使用正确的路径