Start · Sprachen · JavaScript · Referenz · MediaTrackSupportedConstraints.noiseSuppression

MediaTrackSupportedConstraints.noiseSuppression

Eigenschaft

Boolean-Wert, der nur vorhanden und <code>true</code> ist, wenn der Browser die Constraint <code>noiseSuppression</code> (Rauschunterdrückung für Audio) unterstützt.

seit JavaScript Baseline: Chrome, Edge, Firefox, Safari (moderne V Kategorie: webapi

Signatur

MediaTrackSupportedConstraints.noiseSuppression

Beschreibung

Die Eigenschaft noiseSuppression gehört zum Wörterbuch MediaTrackSupportedConstraints, das von navigator.mediaDevices.getSupportedConstraints() zurückgegeben wird. Sie ist nur dann im Objekt vorhanden (und hat dann den Wert true), wenn der User-Agent die Constraint noiseSuppression für Audiospuren kennt. Wird sie nicht unterstützt, fehlt die Eigenschaft einfach, beim Zugriff erhältst du also undefined.

Mit der Constraint noiseSuppression legst du fest, ob der Browser Hintergrundgeräusche aus dem Mikrofonsignal herausfiltern soll, zum Beispiel Lüfter, Tastaturklappern oder Straßenlärm. Für Sprachanwendungen wie Videokonferenzen, Sprachaufnahmen oder WebRTC-Anrufe ist das meistens gewünscht. Bei Musikaufnahmen oder professionellem Audio willst du sie dagegen oft ausschalten, damit das Signal unverfälscht bleibt.

Prüfe die Eigenschaft vor dem Aufruf von getUserMedia() oder MediaStreamTrack.applyConstraints(). So kannst du der Nutzerin z. B. einen Schalter für die Rauschunterdrückung nur dann anzeigen, wenn der Browser die Einstellung überhaupt kennt. Wichtig: Die Eigenschaft sagt nur, dass der Browser die Constraint versteht. Ob das konkrete Gerät sie umsetzen kann, verraten erst MediaStreamTrack.getCapabilities() und getSettings().

Rückgabewert

Typ
boolean | undefined
Beschreibung
true, wenn der Browser die Constraint noiseSuppression unterstützt. Ohne Unterstützung fehlt die Eigenschaft, der Zugriff liefert dann undefined. Den Wert false gibt es in der Praxis nicht.

Beispiele

Unterstützung der Rauschunterdrückung prüfen

const supported = navigator.mediaDevices.getSupportedConstraints();

if (supported.noiseSuppression) {
  console.log('Rauschunterdrückung wird unterstützt.');
} else {
  console.log('Rauschunterdrückung wird nicht unterstützt.');
}
Rauschunterdrückung wird unterstützt.

Mikrofon mit Rauschunterdrückung für einen Sprachanruf öffnen

const startMic = async () => {
  const supported = navigator.mediaDevices.getSupportedConstraints();
  const audio = supported.noiseSuppression
    ? { noiseSuppression: true, echoCancellation: true }
    : true;

  const stream = await navigator.mediaDevices.getUserMedia({ audio });
  const [track] = stream.getAudioTracks();
  console.log('Aktive Einstellung:', track.getSettings().noiseSuppression);
  return stream;
};

startMic().catch((err) => console.error('Zugriff fehlgeschlagen:', err.name));
Aktive Einstellung: true

Rauschunterdrückung per Schalter zur Laufzeit ändern

// <input type="checkbox" id="ns-toggle"> im HTML vorausgesetzt
const toggle = document.querySelector('#ns-toggle');
const supported = navigator.mediaDevices.getSupportedConstraints();

if (!supported.noiseSuppression) {
  toggle.disabled = true;
  toggle.title = 'Vom Browser nicht unterstützt';
}

const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
const [track] = stream.getAudioTracks();

toggle.addEventListener('change', async () => {
  try {
    await track.applyConstraints({ noiseSuppression: toggle.checked });
    console.log('Neu:', track.getSettings().noiseSuppression);
  } catch (err) {
    console.error('Constraint abgelehnt:', err.name);
  }
});
Neu: false

// Wichtig · Fallstricke

  • Nicht auf false prüfen: Fehlt die Unterstützung, ist die Eigenschaft nicht vorhanden (undefined) und nicht false. Prüfe daher auf Wahrheitswert (if (supported.noiseSuppression)) oder mit 'noiseSuppression' in supported.
  • Browser-Unterstützung ist nicht dasselbe wie Geräte-Unterstützung: Die Eigenschaft sagt nur, dass der Browser die Constraint kennt. Was ein bestimmtes Mikrofon tatsächlich kann, zeigt track.getCapabilities().noiseSuppression. Welcher Wert gerade aktiv ist, zeigt track.getSettings().
  • Standardwert: Die meisten Browser schalten die Rauschunterdrückung bei getUserMedia({ audio: true }) von sich aus ein. Für Musik- oder Messaufnahmen solltest du noiseSuppression: false (oft zusammen mit echoCancellation: false und autoGainControl: false) ausdrücklich setzen.
  • Sicherer Kontext: navigator.mediaDevices gibt es nur über HTTPS oder localhost. In unsicheren Kontexten ist es undefined.
  • Qualität je nach Browser: Wie gut die Rauschunterdrückung arbeitet, hängt vom Browser und Betriebssystem ab. In Safari und auf manchen mobilen Plattformen lässt sie sich teilweise nicht zuverlässig abschalten.