AudioContext: createMediaStreamTrackSource()-Methode

Die createMediaStreamTrackSource()-Methode der AudioContext-Schnittstelle erzeugt und gibt ein MediaStreamTrackAudioSourceNode zurück, das eine Audioquelle darstellt, deren Daten vom angegebenen MediaStreamTrack stammen.

Dies unterscheidet sich von der Methode createMediaStreamSource(), die ein MediaStreamAudioSourceNode erstellt, dessen Audio von der Audiospur in einem angegebenen MediaStream kommt, dessen id lexikografisch (alphabetisch) zuerst ist.

Syntax

js
createMediaStreamTrackSource(track)

Parameter

track

Der MediaStreamTrack, der als Quelle aller Audiodaten für den neuen Knoten verwendet wird.

Rückgabewert

Ein MediaStreamTrackAudioSourceNode-Objekt, das als Quelle für Audiodaten in der angegebenen Audiospur dient.

Beispiele

In diesem Beispiel wird getUserMedia() verwendet, um den Zugriff auf das Mikrofon des Benutzers anzufordern. Sobald dieser Zugriff gewährt wurde, wird ein Audiokontext erstellt und ein MediaStreamTrackAudioSourceNode mithilfe von createMediaStreamTrackSource() erstellt, dessen Audio von der ersten Audiospur im Stream stammt, der von getUserMedia() zurückgegeben wird.

Dann wird ein BiquadFilterNode erzeugt, indem createBiquadFilter() verwendet wird, und es wird so konfiguriert, dass ein Tiefenfilter auf das vom Quellknoten kommende Audio angewendet wird. Der Ausgang des Mikrofons wird dann in den neuen Biquad-Filter geleitet, und der Ausgang des Filters wiederum zum destination des Audiokontextes.

js
navigator.mediaDevices
  .getUserMedia({ audio: true, video: false })
  .then((stream) => {
    audio.srcObject = stream;
    audio.onloadedmetadata = (e) => {
      audio.play();
      audio.muted = true;
    };

    const audioCtx = new AudioContext();
    const audioTracks = stream.getAudioTracks();
    const source = audioCtx.createMediaStreamTrackSource(audioTracks[0]);

    const biquadFilter = audioCtx.createBiquadFilter();
    biquadFilter.type = "lowshelf";
    biquadFilter.frequency.value = 3000;
    biquadFilter.gain.value = 20;

    source.connect(biquadFilter);
    biquadFilter.connect(audioCtx.destination);
  })
  .catch((err) => {
    // Handle getUserMedia() error
  });

Spezifikationen

Specification
Web Audio API
# dom-audiocontext-createmediastreamtracksource

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch