Start · Sprachen · JavaScript · Referenz · MediaTrackSettings.volume

MediaTrackSettings.volume

Eigenschaft

Gibt die aktuell eingestellte Lautstärke einer Audio-<code>MediaStreamTrack</code> als Gleitkommazahl von <code>0.0</code> (Stille) bis <code>1.0</code> (volle Lautstärke) an.

seit JavaScript Veraltet und nicht standardisiert: aus der Spezifi deprecated seit ja Kategorie: webapi

Signatur

MediaTrackSettings.volume

Beschreibung

Die Eigenschaft volume des Wörterbuchs MediaTrackSettings enthält den Lautstärkewert, der für eine Audiospur aktuell tatsächlich gilt. Der Wert ist eine Gleitkommazahl mit doppelter Genauigkeit zwischen 0.0 (Stille) und 1.0 (maximale Lautstärke). Man liest ihn über MediaStreamTrack.getSettings() aus.

Der Wert gibt das Ergebnis der Einschränkungen (Constraints) wieder, die Sie mit getUserMedia() oder MediaStreamTrack.applyConstraints() angefordert haben. Er kann vom gewünschten Wert abweichen, wenn das Gerät oder der Browser diesen nicht genau umsetzen kann. Deshalb sollte man nach dem Anwenden von Einschränkungen immer die tatsächlichen Einstellungen prüfen.

Wichtig: Das Constraint volume ist veraltet und nicht standardisiert. Es wurde aus der Spezifikation Media Capture and Streams entfernt. Chromium hat die Unterstützung ebenfalls entfernt. In neuem Code sollten Sie die Lautstärke über die Web Audio API regeln, zum Beispiel mit einem GainNode, oder bei der Wiedergabe über HTMLMediaElement.volume.

Rückgabewert

Typ
number | undefined
Beschreibung
Ein Wert zwischen 0.0 und 1.0, der die aktuelle Lautstärke der Spur angibt. Er ist undefined, wenn der Browser die Einstellung nicht unterstützt oder wenn es sich um eine Videospur handelt.

Beispiele

Aktuelle Lautstärke einer Mikrofonspur auslesen

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

if (typeof settings.volume === 'number') {
  console.log(`Lautstärke: ${settings.volume}`);
} else {
  console.log('volume wird von diesem Browser nicht gemeldet');
}
volume wird von diesem Browser nicht gemeldet

Unterstützung prüfen, bevor das Constraint gesetzt wird

const supported = navigator.mediaDevices.getSupportedConstraints();

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

// Tatsächlich angewendeten Wert prüfen, denn er kann vom Wunschwert abweichen
console.log('volume unterstützt:', Boolean(supported.volume));
console.log('Tatsächlicher Wert:', track.getSettings().volume);
volume unterstützt: false Tatsächlicher Wert: undefined

Moderner Ersatz: Lautstärke per GainNode regeln

const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
const ctx = new AudioContext();
const source = ctx.createMediaStreamSource(stream);
const gain = ctx.createGain();
const destination = ctx.createMediaStreamDestination();

gain.gain.value = 0.5; // 50 % Lautstärke
source.connect(gain).connect(destination);

// destination.stream enthält die leisere Spur, z. B. für eine RTCPeerConnection
const [processedTrack] = destination.stream.getAudioTracks();
console.log(processedTrack.kind, gain.gain.value);
audio 0.5

// Wichtig · Fallstricke

  • Veraltet und nicht standardisiert: volume steht nicht mehr in der aktuellen Spezifikation. Chromium hat es entfernt, Firefox hat es nie unterstützt. Verlassen Sie sich in Produktionscode nicht darauf.
  • Prüfen Sie die Unterstützung immer mit navigator.mediaDevices.getSupportedConstraints().volume und behandeln Sie undefined als Rückgabewert.
  • Der Wert beschreibt die Lautstärke der Quelle bzw. Spur, nicht die Wiedergabelautstärke eines <audio>-Elements. Für die Wiedergabe gibt es HTMLMediaElement.volume.
  • Werte außerhalb von 0.0 bis 1.0 sind nicht zulässig. Für eine Verstärkung über 1.0 brauchen Sie einen GainNode.
  • getUserMedia() funktioniert nur in sicheren Kontexten (HTTPS oder localhost) und erst, nachdem der Nutzer den Zugriff erlaubt hat.