Signatur
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
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');
}
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);
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);
// Wichtig · Fallstricke
- Veraltet und nicht standardisiert:
volumesteht 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().volumeund behandeln Sieundefinedals Rückgabewert. - Der Wert beschreibt die Lautstärke der Quelle bzw. Spur, nicht die Wiedergabelautstärke eines
<audio>-Elements. Für die Wiedergabe gibt esHTMLMediaElement.volume. - Werte außerhalb von
0.0bis1.0sind nicht zulässig. Für eine Verstärkung über 1.0 brauchen Sie einenGainNode. getUserMedia()funktioniert nur in sicheren Kontexten (HTTPS oder localhost) und erst, nachdem der Nutzer den Zugriff erlaubt hat.