如何/在哪里定义 AudioWorkletProcessor

问题描述 投票:0回答:2

我刚刚开始使用 Web Audio API。我仔细阅读了 API 文档并看到了几个示例。我的问题可能很微不足道,我可能错过了一些基本的东西。

我有下面的工作人员 javascript 文件。它来自一个我放错了网址的示例。我正在使用 PyCharm 作为我的 IDE,如果这很重要的话,它会将“AudioWorkletProcessor”标记为未定义。此时我已经查看了很多页面,但没有看到任何可能定义此接口的 import 或 require 语句。

我刚刚尝试在 Firefox 和 Chrome 中运行代码,并且都在未定义的

AudioWorkletProcessor
行上抛出异常。

这应该是“内置”吗?它是我还没有看到引用的库/模块的一部分吗?

class AudioRecorder extends AudioWorkletProcessor {
    static get parameterDescriptors() {
        return [
            {
                name: 'isRecording',
                defaultValue: 0,
                minValue: 0,
                maxValue: 1,
            },
        ]
    }

    process(inputs, outputs, parameters) {
        const buffer = []
        const channel = 0

        for (let t = 0; t < inputs[0][channel].length; t += 1) {
            if (parameters.isRecording[0] === 1) { // <2>
                buffer.push(inputs[0][channel][t])
            }
        }

        if (buffer.length >= 1) {
            this.port.postMessage({buffer})
        }

        return true
    }
}

registerProcessor('audio-recorder', AudioRecorder)
javascript web-audio-api audioworkletprocessor
2个回答
2
投票

AudioWorkletProcessor
基类和
registerProcessor()
函数都可以在
AudioWorkletGlobalScope
中作为全局变量使用。

无法在控制台中评估该代码。您需要像这样加载 JavaScript 文件:

audioContext.audioWorklet.addModule('path/to/your/file.js');

我猜你的 IDE 只是不知道你正在编辑一些本应在该范围内进行评估的内容。


-1
投票

可以给我你的编辑代码吗?

© www.soinside.com 2019 - 2024. All rights reserved.