Start · Sprachen · JavaScript · Referenz · MediaTrackSettings.groupId

MediaTrackSettings.groupId

Eigenschaft

Liefert eine innerhalb der Browsersitzung eindeutige Zeichenkette für die Gerätegruppe (z. B. ein Headset), zu der die Quelle eines <code>MediaStreamTrack</code> gehört.

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

Signatur

MediaTrackSettings.groupId

Beschreibung

Die Eigenschaft groupId des Dictionaries MediaTrackSettings gibt an, zu welcher physischen Gerätegruppe die Quelle eines Tracks gehört. Geräte mit derselben groupId gehören zum selben Gerät, z. B. Mikrofon und Lautsprecher eines USB-Headsets oder Kamera und eingebautes Mikrofon einer Webcam. Den Wert erhält man über MediaStreamTrack.getSettings().

Typische Anwendung: Man findet zu einem verwendeten Mikrofon oder einer Kamera passende weitere Geräte. Dazu vergleicht man den Wert mit MediaDeviceInfo.groupId aus navigator.mediaDevices.enumerateDevices(). So lässt sich z. B. automatisch der Lautsprecher des Headsets auswählen, dessen Mikrofon gerade aktiv ist.

Der Wert ist undurchsichtig: Er enthält keine Information über den Gerätetyp und ist pro Ursprung (Origin) und Browsersitzung vergeben. Um Fingerprinting zu erschweren, kann er sich zwischen Sitzungen ändern. Er ist also nicht dazu gedacht, dauerhaft gespeichert und später wiederverwendet zu werden. Dafür eignet sich eher deviceId.

groupId kann in getUserMedia() auch als Einschränkung (Constraint) genutzt werden. Das ist nur innerhalb derselben Sitzung sinnvoll.

Rückgabewert

Typ
string
Beschreibung
Eine undurchsichtige Kennung der Gerätegruppe. Sie ist innerhalb der Sitzung und des Ursprungs eindeutig. Fehlt die Eigenschaft, kann der Browser den Wert nicht liefern.

Beispiele

groupId eines Mikrofon-Tracks auslesen

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

console.log('Gerät:', track.label);
console.log('groupId:', groupId);
console.log('deviceId:', deviceId);
Gerät: Headset-Mikrofon (USB) groupId: 3f2a9c…e81b deviceId: a71d04…9c2f

Passenden Lautsprecher zum aktiven Headset-Mikrofon wählen

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

const devices = await navigator.mediaDevices.enumerateDevices();
const speaker = devices.find(
  (d) => d.kind === 'audiooutput' && d.groupId === groupId
);

const audio = document.querySelector('audio');
if (speaker && 'setSinkId' in audio) {
  await audio.setSinkId(speaker.deviceId);
  console.log('Ausgabe auf:', speaker.label);
} else {
  console.log('Kein passender Lautsprecher gefunden – Standardausgabe bleibt aktiv.');
}
Ausgabe auf: Headset-Lautsprecher (USB)

Mikrofon derselben Webcam anfordern

const video = await navigator.mediaDevices.getUserMedia({ video: true });
const { groupId } = video.getVideoTracks()[0].getSettings();

// Mikrofon aus derselben Gerätegruppe bevorzugen
const mic = await navigator.mediaDevices.getUserMedia({
  audio: { groupId: { ideal: groupId } }
});

const micSettings = mic.getAudioTracks()[0].getSettings();
console.log('Gleiche Gruppe:', micSettings.groupId === groupId);
Gleiche Gruppe: true

// Wichtig · Fallstricke

  • Nicht dauerhaft speichern: Der Wert kann sich zwischen Sitzungen ändern und gilt nur für den aktuellen Ursprung. Für eine gespeicherte Geräteauswahl ist deviceId besser geeignet. Man sollte aber auch dafür einen Fallback vorsehen.
  • Berechtigungen: Solange keine Medienberechtigung erteilt wurde, liefert enumerateDevices() leere oder eingeschränkte groupId-Werte. Ein Abgleich klappt meist erst nach einem erfolgreichen getUserMedia()-Aufruf.
  • Einschränkung mit exact: { groupId: { exact: … } } führt zu einem OverconstrainedError, wenn kein passendes Gerät existiert. ideal ist toleranter.
  • Kompatibilität: Wird von allen modernen Browsern unterstützt. Die Gruppierung hängt jedoch von Betriebssystem und Treiber ab. Nicht jedes Gerät meldet eine sinnvolle Gruppe, z. B. virtuelle Kameras. setSinkId() für die Ausgabewahl ist in Safari erst in neueren Versionen verfügbar.
  • Nur in sicheren Kontexten (HTTPS) verfügbar, wie die gesamte mediaDevices-API.