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

js
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ệ

NotSupportedError DOMException

Đượ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 parameterDescriptors củ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ên AudioParamDescriptor.

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.

js
// 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.

js
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

Khả năng tương thích với trình duyệt

Xem thêm