gpt4 book ai didi

Webpack 3 找到 .mp4 文件但视频无法播放

转载 作者:行者123 更新时间:2023-12-04 14:33:11 25 4
gpt4 key购买 nike

Webpack 3 定位 .mp4文件但视频无法播放

Clone this project on GitHub

我在 Adob​​e 的新 Animate CC 中创建了一个动画并将其导出为 .mp4文件

在我的 webpack.config.js 文件中,我声明了 file-loader应该用于加载我的 .mp4文件像这样:

webpack.config.js


  {
test: /\.(mov|mp4)$/,
use: [
'file-loader'
]
}

(你可以在下面找到我的 webpack.config.js 源代码)

那么为什么,当我运行 webpack 时(或者更确切地说,在本地, webpack 作为 npm 脚本)

package.json


"build:dev": "webpack --watch",

浏览器是否定位到 .mp4文件

index.html


<video loop autoplay controls>
<source id="arrows" src="c31...random_hash...1611.mp4" type="video/mp4">
</video>

但不玩吗?

我尝试过的其他事情
  • 设置 video标签src JavaScript 中的属性
  • 将视频文件放在同一目录中的 index.html 旁边
  • 使用不同的格式 ( .mov )

  • 这是我的源代码:

    webpack.config.js


    const path = require('path');
    const HtmlWebpackPlugin = require('html-webpack-plugin');
    const ExtractTextPlugin = require('extract-text-webpack-plugin');
    const webpack = require('webpack');

    module.exports = {
    entry: './src/js/main.js',
    output: {
    filename: 'bundle.js',
    path: path.resolve(__dirname, 'dist')
    },
    devtool: 'inline-source-maps',
    devServer: {
    contentBase: './dist',
    port: 3033
    },
    module: {
    rules: [
    {
    test: /\.html$/,
    use: [
    'html-loader'
    ]
    },
    {
    test: /\.scss$|\.css$/,
    use: ExtractTextPlugin.extract({
    fallback: "style-loader",
    use: ["css-loader", "sass-loader"]
    })
    },
    {
    test: /\.(png|svg|jpg|gif)$/,
    use: [
    'file-loader'
    ]
    },
    {
    test: /\.(woff|woff2|eot|ttf|otf)$/,
    use: [
    'file-loader'
    ]
    },
    {
    test: /\.(mov|mp4)$/,
    use: [
    'file-loader'
    ]
    },
    {
    test: /\.(mov|mp4)$/,
    use: [
    'url-loader'
    ]
    }
    ]
    },
    plugins: [
    new HtmlWebpackPlugin({
    template: 'src/html/index.html',
    favicon: 'src/images/icon.png'
    }),
    new ExtractTextPlugin('styles.css'),
    new webpack.ProvidePlugin({
    $: "jquery",
    jQuery: "jquery"
    })
    ],
    resolve: {
    alias: {
    jQuery: "src/js/jquery",
    $: "src/js/jquery"
    }
    }
    }

    main.js


    import mov from '../media/arrows.mp4';

    function render_arrows() {
    var vidtag;
    vidtag = document.getElementById('arrows');
    vidtag.src = mov;
    }

    render_arrows();

    正如我之前提到的,您也可以 clone this project on GitHub.

    最佳答案

    在 webpack.config.js 中指定输出文件名

  • 查看 Wepback Documentation: file-loader
  • 这是您的加载器应该是什么样子:
    {
    test: /\.(mov|mp4)$/,
    use: [
    {
    loader: 'file-loader',
    options: {
    name: '[name].[ext]'
    }
    }
    ]
    }

    重要的!

    您还必须将视频导入您的 main.js文件像这样:

    main.js


    import video_2 from '../media/video_1.mp4';import video_1 from '../media/video_2.mov';
  • 现在,在 index.html(在您的 src/ 目录中),您可以设置 src您的 video 的属性标记到一个相​​对路径,当它加载到 dist/ 时将指向您的视频目录。
    您的路径应如下所示:
        <video loop autoplay controls>
    <source src="./video_1.mp4" type="video/mp4">
    </video>
  • 现在运行 npm run buildnpm run build:dev

  • 您可以选择指定路径,如下所示:

    webpack.config.js


        {
    test: /\.(mov|mp4)$/,
    use: [
    {
    loader: 'file-loader',
    options: {
    name: '[path][name].[ext]'
    }
    }
    ]
    }

    Update



    您也可以使用 CDN 交付您的视频。只需设置 src您的 video元素到 URL。

    IE。
    src="https://cloudflare.com/?user=574983038&video=cat.mp4"
    如果您不想为 CDN 付费,您可以随时使用远程服务器。我意识到这也需要花钱,但很有可能,您可能已经拥有了。只需确保您将 CORS 设置为发送到您的网站:

    使用 PHP 的示例
    header("Access-Control-Allow-Origin: *");
    header("Access-Control-Allow-Methods: GET, POST");

    由于 NodeJS 已经变得非常流行,这可能是最好的交付方式。截至今天(2019 年 5 月 11 日),如果您尝试从 NodeJS 服务器的组件内的相对路径加载视频,同时向根目录以外的任何路径发出 GET 请求,它将无法找到你的文件。例如,如果您的视频位于 https://example.com/videos/593020 ,并且有人向该 URL 发出 GET 请求,您的视频将无法加载,因为 NodeJS 不知道在哪里可以找到它。

    我可能是错的。您可以通过将其导入其他地方来加载它。我所知道的是,Node 会尝试从您使用 window.location.href 的路径指定的任何路径获取您的视频。 .使用 CDN 是 更轻松。

    关于Webpack 3 找到 .mp4 文件但视频无法播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45645675/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com