Movatterモバイル変換


[0]ホーム

URL:


  1. Web
  2. Web-APIs
  3. AudioWorkletProcessor

Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.

View in EnglishAlways switch to English

AudioWorkletProcessor

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⁩.

DasAudioWorkletProcessor-Interface derWeb Audio API repräsentiert den Audioverarbeitungscode hinter einem benutzerdefiniertenAudioWorkletNode. Es befindet sich imAudioWorkletGlobalScope und läuft auf dem Web Audio-Rendering-Thread. Ein darauf basierenderAudioWorkletNode läuft im Gegenzug auf dem Haupt-Thread.

Konstruktor

Hinweis:DerAudioWorkletProcessor und Klassen, die davon abgeleitet sind, können nicht direkt durch vom Benutzer bereitgestellten Code instanziiert werden. Stattdessen werden sie intern nur durch die Erstellung eines zugehörigenAudioWorkletNodes erzeugt. Der Konstruktor der abgeleiteten Klasse wird mit einem Optionsobjekt aufgerufen, sodass Sie benutzerdefinierte Initialisierungsverfahren durchführen können — siehe die Konstruktorseite für Details.

AudioWorkletProcessor()

Erstellt eine neue Instanz einesAudioWorkletProcessor-Objekts.

Instanz-Eigenschaften

portSchreibgeschützt

Gibt einenMessagePort zurück, der für die bidirektionale Kommunikation zwischen dem Prozessor und demAudioWorkletNode, zu dem er gehört, verwendet wird. Das andere Ende ist unter derport Eigenschaft des Knotens verfügbar.

Instanz-Methoden

DasAudioWorkletProcessor-Interface definiert keine eigenen Methoden. Sie müssen jedoch eineprocess()-Methode bereitstellen, die aufgerufen wird, um den Audiostrom zu verarbeiten.

Ereignisse

DasAudioWorkletProcessor-Interface reagiert auf keine Ereignisse.

Nutzungshinweise

Ableitende Klassen

Um benutzerdefinierten Audioverarbeitungscode zu definieren, müssen Sie eine Klasse vomAudioWorkletProcessor-Interface ableiten. Obwohl nicht im Interface definiert, muss die abgeleitete Klasse dieprocess-Methode haben. Diese Methode wird für jeden Block von 128 Sample-Frames aufgerufen und nimmt Eingangs- und Ausgangs-Arrays sowie berechnete Werte benutzerdefinierterAudioParams (falls sie definiert sind) als Parameter entgegen. Sie können Eingaben und Audioparameterwerte verwenden, um das Ausgabearray zu füllen, das standardmäßig Stille enthält.

Optional können Sie, wenn Sie benutzerdefinierteAudioParams auf Ihrem Knoten wünschen, eineparameterDescriptors-Eigenschaft als einenstatischen Getter auf dem Prozessor angeben. Das zurückgegebene Array von aufAudioParamDescriptor basierenden Objekten wird intern verwendet, um dieAudioParams während der Instanziierung desAudioWorkletNode zu erstellen.

Die resultierendenAudioParams befinden sich in derparameters-Eigenschaft des Knotens und können mit Standardmethoden wielinearRampToValueAtTime automatisiert werden. Ihre berechneten Werte werden in dieprocess()-Methode des Prozessors übergeben, damit Sie den Knoten-Ausgang entsprechend formen können.

Audioverarbeitung

Ein Beispielalgorithmus zum Erstellen eines benutzerdefinierten Audiobearbeitungsmechanismus ist:

  1. Erstellen Sie eine separate Datei;

  2. In der Datei:

    1. Erweitern Sie dieAudioWorkletProcessor-Klasse (siehe Abschnitt"Ableitende Klassen") und geben Sie Ihre eigeneprocess()-Methode an;
    2. Registrieren Sie den Prozessor mit derAudioWorkletGlobalScope.registerProcessor()-Methode;
  3. Laden Sie die Datei mit deraddModule()-Methode auf deraudioWorklet-Eigenschaft Ihres Audiokontexts;

  4. Erstellen Sie einenAudioWorkletNode basierend auf dem Prozessor. Der Prozessor wird intern durch denAudioWorkletNode-Konstruktor instanziiert.

  5. Verbinden Sie den Knoten mit den anderen Knoten.

Beispiele

Im folgenden Beispiel erstellen wir einen benutzerdefiniertenAudioWorkletNode, der weißes Rauschen ausgibt.

Zuerst müssen wir einen benutzerdefiniertenAudioWorkletProcessor definieren, der weißes Rauschen ausgibt, und ihn registrieren. Beachten Sie, dass dies in einer separaten Datei geschehen sollte.

js
// white-noise-processor.jsclass WhiteNoiseProcessor extends AudioWorkletProcessor {  process(inputs, outputs, parameters) {    const output = outputs[0];    output.forEach((channel) => {      for (let i = 0; i < channel.length; i++) {        channel[i] = Math.random() * 2 - 1;      }    });    return true;  }}registerProcessor("white-noise-processor", WhiteNoiseProcessor);

Als nächstes laden wir im Hauptskript die Prozessor-Datei, erstellen eine Instanz desAudioWorkletNode, übergeben ihm den Namen des Prozessors und verbinden dann den Knoten mit einem Audiographen.

js
const audioContext = new AudioContext();await audioContext.audioWorklet.addModule("white-noise-processor.js");const whiteNoiseNode = new AudioWorkletNode(  audioContext,  "white-noise-processor",);whiteNoiseNode.connect(audioContext.destination);

Spezifikationen

Specification
Web Audio API
# AudioWorkletProcessor

Browser-Kompatibilität

Siehe auch

Help improve MDN

Learn how to contribute Diese Seite wurde automatisch aus dem Englischen übersetzt.

[8]ページ先頭

©2009-2025 Movatter.jp