MediaSource: isTypeSupported() statische Methode

Hinweis: Dieses Feature ist verfügbar in Dedicated Web Workers.

Die statische Methode MediaSource.isTypeSupported() gibt einen booleschen Wert zurück, der true ist, wenn der gegebene MIME-Typ und (optional) der Codec wahrscheinlich vom aktuellen User-Agent unterstützt werden.

Das bedeutet, dass erfolgreich SourceBuffer-Objekte für diesen Medientyp erstellt werden können. Wenn der zurückgegebene Wert false ist, dann ist der User-Agent sicher, dass er nicht auf Medien des angegebenen Formats zugreifen kann.

Syntax

js
MediaSource.isTypeSupported(type)

Parameter

type

Ein String, der den MIME-Typ der Medien angibt und (optional) einen codecs-Parameter enthält, der eine durch Kommas getrennte Liste der unterstützten Codecs enthält.

Rückgabewert

Ein Wert von false, wenn Medien des angegebenen Typs nicht abgespielt werden.

Ein Wert von true wird zurückgegeben, wenn der Browser Medien des angegebenen Typs wahrscheinlich abspielen kann. Dies ist keine Garantie, und Ihr Code muss darauf vorbereitet sein, dass die Medien möglicherweise nicht korrekt oder überhaupt nicht abgespielt werden.

Alle Web-APIs, die mit Mediendateien arbeiten, verwenden einen "nein/vielleicht/wahrscheinlich"-Ansatz (oder in diesem Fall "nein oder wahrscheinlich"), wenn sie bestimmen, ob ein Medientyp verwendet werden kann. Dies liegt daran, dass Mediendateien komplexe, komplizierte Konstrukte mit viel zu vielen subtilen Variationen sind, um mit Sicherheit etwas zu sagen, bis Sie tatsächlich die Inhalte der Medien verwenden.

Beispiele

Der folgende Ausschnitt stammt aus einem Beispiel, das von Nick Desaulniers geschrieben wurde (sehen Sie sich die vollständige Demo live an oder laden Sie den Quellcode herunter zur weiteren Untersuchung). Die Funktion getMediaSource(), die hier nicht definiert ist, gibt eine MediaSource zurück.

js
const assetURL = "frag_bunny.mp4";
// Need to be specific for Blink regarding codecs
// ./mp4info frag_bunny.mp4 | grep Codec
const mimeCodec = 'video/mp4; codecs="avc1.42E01E, mp4a.40.2"';
let mediaSource;

if ("MediaSource" in window && MediaSource.isTypeSupported(mimeCodec)) {
  mediaSource = getMediaSource();
  console.log(mediaSource.readyState); // closed
  video.src = URL.createObjectURL(mediaSource);
  mediaSource.addEventListener("sourceopen", sourceOpen);
} else {
  console.error("Unsupported MIME type or codec: ", mimeCodec);
}

function sourceOpen() {
  console.log(this.readyState); // open
  const sourceBuffer = mediaSource.addSourceBuffer(mimeCodec);
  fetchAB(assetURL, (buf) => {
    sourceBuffer.addEventListener("updateend", () => {
      mediaSource.endOfStream();
      video.play();
      console.log(mediaSource.readyState); // ended
    });
    sourceBuffer.appendBuffer(buf);
  });
}

Spezifikationen

Specification
Media Source Extensions™
# dom-mediasource-istypesupported

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch