如何添加 AudioWorkletProcessor 以在 Dart 的 audioWorkletNode 中使用它?
How do I add an AudioWorkletProcessor to work with it in audioWorkletNode in Dart?
纯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);
我在 AudioContext
class 中找不到 audioWorklet
属性。
我试图在文档中找到 audioWorklet
或 addModule
的其他位置,但没有成功。
如何在 Dart 的 audioWorkletNode
中添加 AudioWorkletProcessor
以使用它?
如果 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']));
纯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);
我在 AudioContext
class 中找不到 audioWorklet
属性。
我试图在文档中找到 audioWorklet
或 addModule
的其他位置,但没有成功。
如何在 Dart 的 audioWorkletNode
中添加 AudioWorkletProcessor
以使用它?
如果 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']));