13

我似乎无法弄清楚如何从本地文件获取 html5 视频以在反应应用程序中呈现。从字面上看,我能够让它工作的唯一方法是这样的:

<video src="http://www.w3schools.com/html/movie.mp4" controls />

这是我尝试过的

1.直接包含路径

<video src={require('path/to/file.mp4')} controls />

返回错误

Module parse failed: /path/to/file.mp4 Line 1: Unexpected token ILLEGAL
You may need an appropriate loader to handle this file type.

2.一次将这些加载器添加到 webpack 配置中

{
  test: /\.(mp4)$/,
  loader: 'file'
  // loader: 'url-loader'
  // loader: 'url-loader?limit=100000'
  // loader: 'file-loader'
  // loader: 'file-loader?name=videos/[name].[ext]'
},

这在浏览器中吐出以下错误

GET http://localhost:3000/530c2bf99dad0f857d46940b62b84946.mp4 404 (Not Found)

3.我尝试在文件中添加一个直接的url

<video src={require('http://localhost:3000/path/to/file.mp4')} controls />

但仍然有错误:

Module not found: Error: Cannot resolve module 'http://localhost:3000/path/to/file.mp4' in path/to/file.mp4

4.我尝试像这个人一样在我的 webpack 配置中添加 mp4 扩展

{
  test: /\.jpe?g$|\.gif$|\.png$|\.ico|\.svg$|\.woff$|\.ttf$|.mp4$/,
  loader: 'url-loader?limit=8192'
}

但没有运气


5.我开始实现webpack-isomorphic-tools,但后来我不确定这是否是正确的方向,所以我暂停了它。看来这家伙是这样操作的。(见文件


我还在加载视频文件 的加载器约定下的 webpack 文档中注意到。 这是否意味着 webpack 不会加载其他视频类型,例如?file-loaderwebpack 文档图片.mov, .vob, .avi, etc.

如果你想看一下代码,这里是存储库


资源

4

2 回答 2

15

我有同样的问题,我的解决方案是:

它使用https://github.com/webpack/html-loaderhttps://github.com/webpack/url-loader

装载机配置:

  loaders: [{
      test: /\.html$/,
      loader: 'html-loader?attrs[]=video:src'
    }, {
      test: /\.mp4$/,
      loader: 'url?limit=10000&mimetype=video/mp4'
  }]

在html中:

一个简单的视频标签,记住 webpack 使用引用到 html 文件的路径。

<video src="../../../assets/videos/cover1.mp4"></video>

这对我有用。

参考资料: https ://github.com/webpack/html-loader/issues/28

于 2016-04-20T16:41:00.647 回答
0

虽然这是一篇旧帖子,但问题专门针对 WebPack ......

如果您正在使用Typescript样板,例如create-react-app,并且您的视频位于静态文件夹中,请src/react-app-env.d.ts在弹出应用程序之前查看此解决方案,将类型添加到 :

https://github.com/facebook/create-react-app/issues/6822

于 2020-10-28T16:53:46.923 回答