首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Web :当我从outputChannelCount继承时,AudioWorkletProcessor无法工作

Web :当我从outputChannelCount继承时,AudioWorkletProcessor无法工作
EN

Stack Overflow用户
提问于 2022-05-23 10:09:02
回答 1查看 118关注 0票数 0

我有下面的例子。我尝试通过调用options传递super(...)参数。当我这样做时,我不会得到我指定的2个输出通道,而是只得到一个输出通道。

代码语言:javascript
复制
class Processor extends AudioWorkletProcessor {
    constructor() {
        super({outputChannelCount: [2]});
    }

    process(inputs, outputs, parameters) {
        console.log("output channels: ", outputs[0].length);
        return true;
    }
}

registerProcessor('processor', Processor);

当我尝试将options传递给AudioWorkletNode时(如下面的示例所示),它会像预期的那样工作。

代码语言:javascript
复制
    let audioContext = new AudioContext();
    (async () => {
        await audioContext.audioWorklet.addModule('processor.js');
        audioWorkletNode = new AudioWorkletNode(audioContext, 'processor', {outputChannelCount: [2]});
        audioWorkletNode.connect(audioContext.destination);
    })();

这在我尝试过的任何浏览器中都不起作用。

我做错了什么吗?这是个虫子吗?在Web规范中是否有我在这里遗漏的东西?

EN

回答 1

Stack Overflow用户

发布于 2022-05-23 19:16:50

我想你所描述的一切都是意料之中的。AudioWorkletProcessor的构造函数在这里不接受IDL定义定义的任何参数:

https://webaudio.github.io/web-audio-api/#AudioWorkletProcessor

在主线程上传递给AudioWorkletNode构造函数的选项被存储为称为pending processor construction data的东西。它们被自动应用,无法从处理器内部更改它们。

我想这是为了确保AudioWorkletNode及其相应的AudioWorkletProcessor始终具有相同的配置。如果您可以更改处理器内部的配置,AudioWorkletNode将失去同步,直到信息再次返回。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72346766

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档