首页 > 解决方案 > 如何在 Dart 的 audioWorkletNode 中添加 AudioWorkletProcessor 以使用它?

问题描述

在纯JS中我可以做到:

const audioContext = new AudioContext();
const source = audioContext.createMediaElementSource(new Audio());

await audioContext.audioWorklet.addModule('./my-processor.js');
const processorNode = new AudioWorkletNode(audioContext, 'my-processor');

source.connect(processorNode);
processorNode.connect(audioContext.destination);

Dart中我做不到:

var audioContext = AudioContext();
var source = audioContext.createMediaElementSource(AudioElement());

audioContext.audioWorklet // The getter 'audioWorklet' isn't defined for the class 'AudioContext'.
var processorNode = AudioWorkletNode(audioContext, 'my-processor');

source.connectNode(processorNode);
processorNode.connectNode(audioContext.destination);

我在课堂上找不到该audioWorklet物业。AudioContext我试图在文档中找到audioWorkletaddModule可能位于的其他位置,但没有成功。

如何在 Dart中添加一个AudioWorkletProcessor来使用它?audioWorkletNode

标签: dartweb-audio-api

解决方案


如果 JS 互操作对象中没有方法或属性,您可以使用dart:js_util

import 'package:js/js_util.dart' as jsu;

var worklet = jsu.getProperty(audioContext, 'audioWorklet'));

jsu.callMethod(worklet, 'addModule', ['./my-processor.js']));

推荐阅读