MediaSource: isTypeSupported() static method

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Note: This feature is available in Dedicated Web Workers.

Phương thức tĩnh MediaSource.isTypeSupported() trả về một giá trị boolean là true nếu MIME type và codec (tùy chọn) đã cho có khả năng được user agent hiện tại hỗ trợ.

Tức là, nếu nó có thể tạo thành công các đối tượng SourceBuffer cho loại media đó. Nếu giá trị trả về là false, thì tác nhân người dùng chắc chắn rằng nó không thể truy cập media ở định dạng được chỉ định.

Cú pháp

js
MediaSource.isTypeSupported(type)

Tham số

type

Một chuỗi chỉ định MIME type của media và (tùy chọn) một tham số codecs chứa danh sách các codec được hỗ trợ, phân cách bằng dấu phẩy.

Giá trị trả về

Giá trị false nếu media của loại đã cho sẽ không phát được.

Giá trị true được trả về nếu trình duyệt có thể phát media của loại được chỉ định. Đây không phải là sự đảm bảo, và code của bạn phải được chuẩn bị cho khả năng media sẽ không phát được nếu có.

Tất cả các Web API hoạt động với các tệp media đều sử dụng cách tiếp cận "không/có thể/có thể" (hoặc trong trường hợp này là "không hoặc có thể") khi xác định xem một loại media có thể được sử dụng hay không. Điều này là vì các tệp media là các cấu trúc phức tạp, tinh tế với quá nhiều biến thể tinh tế để chắc chắn hoàn toàn về bất cứ điều gì cho đến khi bạn thực sự sử dụng nội dung của media.

Ví dụ

Đoạn code sau từ một ví dụ do Nick Desaulniers viết (xem demo trực tiếp đầy đủ, hoặc tải mã nguồn xuống để xem kỹ hơn). Hàm getMediaSource(), không được định nghĩa ở đây, trả về một MediaSource.

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);
  });
}

Thông số kỹ thuật

Specification
Media Source Extensions™
# dom-mediasource-istypesupported

Tương thích trình duyệt

Xem thêm