AudioWorkletGlobalScope: phương thức registerProcessor()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.
Phương thức registerProcessor của giao diện
AudioWorkletGlobalScope đăng ký hàm khởi tạo của một lớp kế thừa từ
giao diện AudioWorkletProcessor dưới một tên xác định.
Cú pháp
registerProcessor(name, processorCtor)
Tham số
name-
Một chuỗi biểu thị tên mà processor sẽ được đăng ký dưới tên đó.
processorCtor-
Hàm khởi tạo của một lớp kế thừa từ
AudioWorkletProcessor.
Note:
Một cặp khóa-giá trị { name: constructor }
được lưu nội bộ trong AudioWorkletGlobalScope sau khi processor
được đăng ký. Tên này sẽ được tham chiếu tới khi tạo một
AudioWorkletNode dựa trên processor đã đăng ký. Một processor mới với
tên đã cho sẽ được tạo nội bộ và liên kết với node mới.
Giá trị trả về
Không có (undefined).
Ngoại lệ
NotSupportedErrorDOMException-
Được ném ra trong các điều kiện sau:
- name là một chuỗi rỗng.
- Một hàm khởi tạo với name đã cho đã được đăng ký trước đó. Không được phép đăng ký cùng một tên hai lần.
TypeError-
Được ném ra trong các điều kiện sau:
- processorCtor không phải là một hàm khởi tạo có thể gọi được.
- Thuộc tính
parameterDescriptorscủa hàm khởi tạo tồn tại nhưng không trả về một mảng các đối tượng dựa trênAudioParamDescriptor.
Ví dụ
Trong ví dụ này, chúng ta tạo một AudioWorkletNode tùy chỉnh để xuất ra sự im lặng.
Trước tiên, chúng ta cần định nghĩa một AudioWorkletProcessor tùy chỉnh và đăng ký nó.
Lưu ý rằng việc này nên được thực hiện trong một tệp riêng.
// test-processor.js
class TestProcessor extends AudioWorkletProcessor {
process(inputs, outputs, parameters) {
return true;
}
}
registerProcessor("test-processor", TestProcessor);
Tiếp theo, trong tệp kịch bản chính, chúng ta sẽ tải processor, tạo một thể hiện của
AudioWorkletNode, truyền cho nó tên processor mà chúng ta đã dùng khi gọi
registerProcessor, rồi kết nối nó vào một đồ thị âm thanh.
const audioContext = new AudioContext();
await audioContext.audioWorklet.addModule("test-processor.js");
const node = new AudioWorkletNode(audioContext, "test-processor");
node.connect(audioContext.destination);
Thông số kỹ thuật
| Specification |
|---|
| Web Audio API> # dom-audioworkletglobalscope-registerprocessor> |