MediaSource: isTypeSupported() 静的メソッド

MediaSource.isTypeSupported() 静的メソッドは、指定された MIME タイプが現在のユーザーエージェントによってサポートされる可能性が高い場合に true となる論理値を返します。

つまり、その MIME タイプの SourceBuffer オブジェクトを正常に作成できる場合です。 返された値が false の場合、ユーザーエージェントは、指定された形式のメディアにアクセスできないと確信しています。

構文

js
MediaSource.isTypeSupported(type)

引数

type

現在のブラウザーでの対応をテストする MIME メディアタイプ。 これには、ファイル内で使用されるコーデックに関する追加の詳細を提供する codecs 引数 (en-US)が含まれる場合があります。

返値

指定されたタイプのメディアを再生しない場合は false の値です。

指定されたタイプのメディアをおそらく再生できるとブラウザーが感じる場合に true になります。ただし、これは保証ではなく、メディアが正しく再生されない可能性に備えてコードを準備する必要があります。

メディアファイルで動作するすべての Web API は、メディアタイプを使用できるかどうかを判断するときに、「いいえ/多分/おそらく」アプローチ(または、この場合は「いいえまたはおそらく」)を使用します。 これは、メディアファイルが複雑で難解な構造であるため、実際にメディアのコンテンツを使用するまでは、微妙なバリエーションが多すぎて絶対に確実ではないためです。

次のスニペットは、Nick Desaulniers によって書かれた例からのものです(ライブで完全なデモを見るか、ソースをダウンロードしてさらに調査してください)。ここでは定義されていませんが、関数 getMediaSource()MediaSource を返します。

js
const assetURL = "frag_bunny.mp4";
// Blink はコーデックに関して特定する必要がある
// ./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(
    "サポートされていない MIME タイプまたはコーデック: ",
    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);
  });
}

仕様書

Specification
Media Source Extensions™
# dom-mediasource-istypesupported

ブラウザーの互換性

BCD tables only load in the browser

関連情報