【问题标题】:FFmpeg.wasm stopped working after adding cross origin headers添加跨域标头后 FFmpeg.wasm 停止工作
【发布时间】:2021-11-08 22:55:15
【问题描述】:

我有SharedArrayBuffer error as described in this other issue,为了解决这个问题,我按照建议(也建议here)通过添加标题添加了跨源隔离

Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Embedder-Policy: require-corp

在那之后,现在当我尝试运行代码时,我得到了Uncaught ReferenceError: FFmpeg is not defined。该错误发生在 Firefox 上

我的代码是:

<script  src="https://unpkg.com/@ffmpeg/ffmpeg@0.10.0/dist/ffmpeg.min.js"></script>
<script>
    
    const { createFFmpeg, fetchFile } = FFmpeg; //error happens here
    const ffmpegInstance = createFFmpeg({
        corePath: 'https://unpkg.com/@ffmpeg/core@0.10.0/dist/ffmpeg-core.js',
        log: true,
    });
 </script> 

在此之前,在 Brave 浏览器上,进程运行正常,无需添加跨域标头,并且还定义了 FFmpeg 变量。

【问题讨论】:

    标签: javascript ffmpeg webassembly


    【解决方案1】:

    原因是要让 SharedArrayBuffer 工作,使用其功能的脚本也必须通过这些标头选择加入。

    很遗憾,https://unpkg.com/ 目前不提供带有 COOP/COEP 标头的脚本。

    要使您的应用程序再次运行,您必须从您自己的来源复制并自行托管这些源,或者将它们捆绑为您的应用程序的一部分。

    【讨论】:

    • 这很奇怪,因为从 unpkg 获取请求后我仍然有状态 200...
    • 如果我在本地加载 .js 脚本,那么它会失败并出现 404 错误 GET http://127.0.0.1:3000/ffmpeg/ffmpeg-core.wasmGEThttp://127.0.0.1:3000/ffmpeg/ffmpeg-core.worker.js.. 脚本尝试在本地加载其他资源...
    • 好吧,它以 404 失败,只是因为您没有这些资源。要么手动下载它们,要么使用最简单的 npm:npm install @ffmpeg/ffmpeg @ffmpeg/core(来自github.com/ffmpegwasm/ffmpeg.wasm README)。然后,您将获得一份包含 node_modules/@ffmpeg/... 中所需所有内容的副本,您可以从脚本中访问它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-29
    • 2015-06-14
    • 1970-01-01
    • 2019-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多