javascript - 移动浏览器不支持 WebM 视频时的后备图像

标签 javascript html webm

我有一个使用移动浏览器的 WebM 视频。当这些浏览器不支持WebM时,我想显示图像:

<video
  src={video}
  autoPlay>
  <img src={poster} />
</video>

但在 iOS 的移动 safari/chrome/firefox 浏览器中,它显示黑色背景并带有无法播放图标。它不会像我预期的那样回退显示图像。

我还尝试将 poster 属性添加到 video 标记:

<video
  poster={poster}
  src={video}
  autoPlay>
  <img src={poster} />
</video>

还有这个:

<video
  loop
  autoPlay>
  <source src={video} type="video/webm" />
  <img src={poster} style={{ width: '100%', height: '100%' }} />
</video>

这也不起作用。

任何人都知道如何在浏览器不支持 WebM 时显示图像。

最佳答案

@Kaiido说的是,支持的不是标签而是媒体,大多数移动浏览器在重置 src 后不会再次放置海报。

所以我必须直接替换图像。

我使用 React 作为我的堆栈,这是我的解决方案:

class App extends PureComponent {
  state = {
    isSupportWebM: true,
  }

  componentDidMount(){
    const videoElement = document.querySelector('.video');
    videoElement.addEventListener('error', () => {
      this.setState({
        isSupportWebM: false,
      });
    });
  }

  componentWillUnmount(){
    // remove the listener
  }

  render(){
     const {
       isSupportWebM,
     } = this.state;
     return (
       <div>
         {
           isSupportWebM
           ? <video src={...}></video>
           : <img src={...} />
         }
       </div>
     )
  }
}

关于javascript - 移动浏览器不支持 WebM 视频时的后备图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47069856/

相关文章:

javascript - 气体/Javascript : How do I set values to only empty rows at the bottom of the sheet

javascript - 使用环回REST API时如何更改gulp-Angular项目的端口号

javascript - 我有一个 DOM 节点,如何获取其中的文本

html - GWT uibinder 自动更正关闭

node.js - 如何在nodeJS中将音频和视频.webm文件合并为一个?

javascript 获取数组元素的键

html - :before pseudo element is not staying in div

html - 如何在滚动的 html 中为事件链接添加 li 边框

python - 将音频和视频 block 从 python 传输到 ffmpeg 的最佳方法

video - 透明地将 mp4 转换为 webm?