Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

MediaDevices: Methode getSupportedConstraints()

Baseline
Weitgehend verfügbar

Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit September 2017 browserübergreifend verfügbar.

Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.

Die Methode getSupportedConstraints() des Interfaces MediaDevices gibt ein Objekt zurück, dessen Eigenschaften jeweils eine der einschränkbaren Eigenschaften angeben, die der User Agent kennt.

Syntax

js
getSupportedConstraints()

Parameter

Keine.

Rückgabewert

Ein neues Objekt mit den vom User Agent unterstützten Constraints. Da die Liste nur unterstützte Constraints enthält, hat jede dieser booleschen Eigenschaften den Wert true. Nicht unterstützte Constraints fehlen in der Liste; beim Lesen ihrer Eigenschaften wird daher undefined zurückgegeben. Die verfügbaren Eigenschaften sind:

aspectRatio

Der User Agent unterstützt das Einschränken des Seitenverhältnisses (Breite geteilt durch Höhe) von Videospuren.

autoGainControl

Der User Agent unterstützt die Angabe, ob die automatische Verstärkungsregelung für Audiospuren aktiviert ist.

channelCount

Der User Agent unterstützt das Einschränken der Anzahl der Audiokanäle, beispielsweise auf einen Kanal für Mono oder zwei für Stereo.

deviceId

Der User Agent unterstützt die Auswahl einer Medienquelle anhand ihrer Geräte-ID.

displaySurface

Der User Agent unterstützt die Angabe eines bevorzugten Typs von Anzeigefläche (Browser-Tab, Fenster oder Monitor) für die Bildschirmaufnahme.

echoCancellation

Der User Agent unterstützt die Angabe, ob die Echounterdrückung für Audiospuren aktiviert ist.

facingMode

Der User Agent unterstützt die Angabe der Ausrichtung einer Kamera, beispielsweise zum Benutzer oder zu dessen Umgebung.

frameRate

Der User Agent unterstützt das Einschränken der Bildrate von Videospuren in Bildern pro Sekunde.

groupId

Der User Agent unterstützt die Auswahl einer Medienquelle anhand ihrer Gruppen-ID, die Quellen desselben physischen Geräts kennzeichnet.

height

Der User Agent unterstützt das Einschränken der Höhe von Videospuren.

latency

Der User Agent unterstützt das Einschränken der Latenz von Audiospuren in Sekunden.

logicalSurface

Der User Agent unterstützt die Angabe, ob bei der Bildschirmaufnahme logische Anzeigeflächen verwendet werden, die auf dem Bildschirm möglicherweise nicht vollständig sichtbar sind.

noiseSuppression

Der User Agent unterstützt die Angabe, ob die Rauschunterdrückung für Audiospuren aktiviert ist.

resizeMode

Der User Agent unterstützt die Angabe, ob Zuschneiden und Herunterskalieren verwendet werden dürfen, um Auflösung und Bildrate einer Videospur zu bestimmen.

restrictOwnAudio

Der User Agent unterstützt die Angabe, ob Systemaudio, das vom aufzeichnenden Tab stammt, aus der Bildschirmaufnahme herausgefiltert wird.

sampleRate

Der User Agent unterstützt das Einschränken der Abtastrate von Audiospuren.

sampleSize

Der User Agent unterstützt das Einschränken der Abtastgröße von Audiospuren in Bit pro linearem Abtastwert.

suppressLocalAudioPlayback

Der User Agent unterstützt die Angabe, ob Audio, das in einem aufgezeichneten Tab abgespielt wird, weiterhin über die lokalen Lautsprecher des Benutzers wiedergegeben wird.

volume

Der User Agent unterstützt das Einschränken der Lautstärke von Audiospuren von 0.0 (Stille) bis 1.0 (höchste unterstützte Lautstärke).

width

Der User Agent unterstützt das Einschränken der Breite von Videospuren.

Beispiele

Unterstützung für Constraints prüfen

Dieses Beispiel erzeugt eine Tabelle, die zeigt, ob Ihr Browser die jeweils aufgeführten Constraints unterstützt.

HTML

html
<table>
  <caption>
    Media constraint support
  </caption>
  <thead>
    <tr>
      <th scope="col">Constraint</th>
      <th scope="col">Supported</th>
    </tr>
  </thead>
  <tbody id="constraintSupport"></tbody>
</table>

JavaScript

js
const constraints = [
  "aspectRatio",
  "autoGainControl",
  "channelCount",
  "deviceId",
  "displaySurface",
  "echoCancellation",
  "facingMode",
  "frameRate",
  "groupId",
  "height",
  "latency",
  "logicalSurface",
  "noiseSuppression",
  "resizeMode",
  "restrictOwnAudio",
  "sampleRate",
  "sampleSize",
  "suppressLocalAudioPlayback",
  "volume",
  "width",
];
const supportedConstraints = navigator.mediaDevices.getSupportedConstraints();
const tableBody = document.querySelector("#constraintSupport");

for (const constraint of constraints) {
  const row = document.createElement("tr");
  const name = document.createElement("th");
  name.scope = "row";
  const code = document.createElement("code");
  code.textContent = constraint;
  name.appendChild(code);

  const support = document.createElement("td");
  support.textContent = supportedConstraints[constraint] ? "Yes" : "No";

  row.append(name, support);
  tableBody.appendChild(row);
}

Ergebnis

Constraints vor dem Anfordern einer Bildschirmaufnahme prüfen

Die folgende Funktion richtet das Optionsobjekt für den Aufruf von getDisplayMedia() ein. Sie fügt jeden der folgenden Constraints nur hinzu, wenn bekannt ist, dass der Browser ihn unterstützt:

  • displaySurface, um die Freigabe eines gesamten Monitors zu bevorzugen.
  • logicalSurface, um logische Anzeigeflächen anzufordern, die auf dem Bildschirm möglicherweise nicht vollständig sichtbar sind.
  • suppressLocalAudioPlayback, um zu bewirken, dass aufgezeichnetes Audio nicht über die lokalen Lautsprecher des Benutzers wiedergegeben wird.

Diese Constraints schränken nicht ein, welche Anzeigeflächen der Benutzer für die Freigabe auswählen kann. Anschließend wird die Aufnahme gestartet, indem getDisplayMedia() aufgerufen und der zurückgegebene Stream dem durch videoElem repräsentierten Element unsupported templ: ( zugewiesen wird.

js
async function capture(videoElem) {
  const supportedConstraints = navigator.mediaDevices.getSupportedConstraints();
  const displayMediaOptions = {
    video: {},
    audio: {},
  };

  if (supportedConstraints.displaySurface) {
    displayMediaOptions.video.displaySurface = "monitor";
  }

  if (supportedConstraints.logicalSurface) {
    displayMediaOptions.video.logicalSurface = true;
  }

  if (supportedConstraints.suppressLocalAudioPlayback) {
    displayMediaOptions.audio.suppressLocalAudioPlayback = true;
  }

  try {
    videoElem.srcObject =
      await navigator.mediaDevices.getDisplayMedia(displayMediaOptions);
  } catch (err) {
    /* handle the error */
  }
}

Spezifikationen

Spezifikation
Media Capture and Streams
# dom-mediadevices-getsupportedconstraints

Browser-Kompatibilität