标签: audio-worklet

使用后移除工作集

我的程序根据运行时生成的代码创建了很多工作集。它们仅使用很短的时间。有没有办法删除或取消注册旧的、未使用的工作集以重新获得内存?或者这是由 GC 自动完成的?

https://developer.mozilla.org/en-US/docs/Web/API/Worklet/addModule

javascript audio-worklet

8
推荐指数
1
解决办法
385
查看次数

(Next JS 10.2) 音频工作集支持

我们的应用程序构建在 Next 之上,目前我们正在将音频录制引擎从 Script Processor 迁移到 Audio Worklet API。(当然具有向后兼容性)过渡的一部分也是升级到 Webpack 5。我们正在利用 Web Workers 和 Audio Worklet。在切换到 Webpack 5(它自带对 Workers 的本机支持)之前(至少看起来是这样),我们使用了worker-plugin。它对两者都非常有效,但是随着过渡,我们不能再依赖它,因为它使用过时的 webpack 的 API,并且 Next 附带了自己捆绑的 Webpack 4 和 5,它们似乎不包含向后兼容性。

现在的挑战是让这些与 Next 捆绑在一起的 Webpack 5 一起使用。第一个问题来自网络工作者的全局范围未定义。config.output.globalObject这可以通过设置为来解决"(typeof self !== 'undefined' ? self : this)"。一旦工作人员正常工作,下一个问题就会出现在尝试捆绑工作集的代码时。目前,Webpack 5 不支持工作集导入,但它们公开了解析器配置,可用于告诉 webpack 将其作为工作进程加载,如此Github 问题所示。这将在下一步中失败,除非您还设置了config.output.publicPath = "/_next/";通过加载块时audioContext.audioWorklet.addModule(...),代码崩溃Uncaught TypeError: Cannot read property 'webpackChunk_N_E' of undefined。如果我们检查包含捆绑工作集代码的块,我们将看到该道具的使用方式如下:

var chunkLoadingGlobal = (typeof self !== 'undefined' ? self : …
Run Code Online (Sandbox Code Playgroud)

webpack web-audio-api next.js audio-worklet webpack-5

6
推荐指数
1
解决办法
1600
查看次数