HTML canPlayType khác MediaSource.isTypeSupported ở mục tiêu kiểm tra nào?

By admin
Tóm tắt

Hai API có vẻ tương tự vì cùng nhận thông tin về media, nhưng chúng trả lời những câu hỏi khác nhau. canPlayType thuộc phần tử video/audio của HTML và gợi ý mức độ có thể phát loại media; MediaSource.isTypeSupported hỏi liệu kiểu MIME cùng codec có thể dùng để tạo SourceBuffer trong MSE hay không. Kết quả thuận lợi không bảo đảm một tệp, luồng hoặc trình phát cụ thể sẽ giải mã thành công.

Điểm chính

  1. canPlayType trả về tín hiệu khả năng phát của media element, không phải kiểm tra giải mã một tệp cụ thể. [1]
  2. MediaSource.isTypeSupported kiểm tra khả năng hỗ trợ MIME type/codec để tạo SourceBuffer trong mô hình MSE. [2]
  3. Codec, container và cấu hình thiết bị/trình duyệt cùng ảnh hưởng khả năng phát; tài liệu codec không xác nhận KLIVE dùng định dạng nào. [3]
  4. Kiểm tra API là bước sàng lọc; thử media thực tế và đọc lỗi runtime mới giúp xác định vấn đề của trường hợp cụ thể.

canPlayType hỏi phần tử media điều gì?

HTMLMediaElement.canPlayType nhận một chuỗi mô tả kiểu media, thường gồm MIME type và thông tin codec, rồi trả về một trong các kết quả biểu thị mức độ có thể phát. Đây là câu trả lời của trình duyệt cho một mô tả loại nội dung, không phải chứng nhận rằng mọi tệp mang nhãn tương tự đều có thể giải mã. Tài nguyên có thể hỏng, thiếu dữ liệu, dùng profile không hỗ trợ hoặc gặp lỗi khi tải.

Hãy đọc kết quả như tín hiệu trước khi thử phát, không phải lời cam kết. Một giá trị cho thấy có khả năng hỗ trợ không kiểm tra trạng thái mạng, nội dung thực tế, cấu hình codec đầy đủ hay lỗi từ máy chủ. Nếu API trả về không có hỗ trợ đáng tin cậy, ứng dụng vẫn cần cách xử lý phù hợp như chọn nguồn khác hoặc thông báo định dạng không khả dụng.

MDN mô tả phần tử video HTML, các thuộc tính nguồn và khả năng phát trong môi trường trình duyệt. Khi dùng canPlayType, hãy nêu chính xác chuỗi MIME/codec được hỏi và trình duyệt kiểm tra. Đừng rút gọn thành “trình duyệt hỗ trợ video” nếu câu hỏi chỉ kiểm tra một mô tả định dạng. [1]

MediaSource.isTypeSupported tập trung vào MSE

Media Source Extensions (MSE) là API cho phép ứng dụng web xây dựng đường đưa dữ liệu media theo từng phần vào phần tử phát. Trong bối cảnh đó, MediaSource.isTypeSupported kiểm tra liệu trình duyệt có hỗ trợ kiểu MIME được cung cấp để tạo SourceBuffer hay không. Nó nhắm tới khả năng của một giao diện trong MSE, không phải phép thử thay thế cho canPlayType và không xác nhận rằng dữ liệu thực tế đã có thể phát.

Illustration: MediaSource.isTypeSupported tập Decorative illustration for the section "MediaSource.isTypeSupported tập"; visual only, carries no data.

Nếu xây dựng luồng MSE, cần kiểm tra API trong cùng môi trường mà ứng dụng chạy, sau đó xem bước tạo MediaSource, SourceBuffer, append dữ liệu và sự kiện lỗi. Một kiểu được chấp nhận vẫn có thể gặp vấn đề do phân đoạn không phù hợp, dữ liệu bị hỏng, sai thứ tự hoặc lỗi phát sinh ở một bước khác. Kết quả trả về không giải quyết các điều kiện này. [2]

Nên chọn API theo câu hỏi: cần xem media element báo gì về khả năng phát một loại nội dung thì kiểm tra canPlayType; cần biết kiểu MIME/codec có khả năng dùng với SourceBuffer hay không thì kiểm tra isTypeSupported. Nếu ứng dụng vừa dùng phần tử media vừa tự quản lý buffer qua MSE, có thể cần cả hai phép thử ở đúng giai đoạn, nhưng không coi chúng là hai bài test tương đương.

Codec, container và giới hạn của kết quả hỗ trợ

Một tệp video thường kết hợp container với một hoặc nhiều codec. Chuỗi MIME và tham số codec phải mô tả đúng nội dung; tên phần mở rộng đơn lẻ không đủ để chứng minh codec bên trong. Hướng dẫn codec video của MDN giải thích các đánh đổi nén, chất lượng, dung lượng và khả năng hỗ trợ khác nhau theo trình duyệt, nền tảng và thiết bị. Không có căn cứ để suy từ API rằng một dịch vụ cụ thể đang mã hóa video bằng codec nào. [3]

Khi kiểm tra thực tế, ghi lại trình duyệt và phiên bản, hệ điều hành, thiết bị, chuỗi MIME/codec đã hỏi, API được gọi và kết quả runtime. Dùng một mẫu media hợp lệ rồi theo dõi lỗi tải, parse, append và decode riêng biệt. Nếu hai thiết bị cho kết quả khác nhau, đó là khác biệt quan sát được trong môi trường thử, không tự chứng minh rằng một API luôn đáng tin hơn API kia.

Tránh dùng một kiểm tra nhỏ để khẳng định tương thích toàn bộ dịch vụ. Một ứng dụng phát có thể thay đổi biến thể, codec hoặc đường phát theo cấu hình; các tài liệu API chỉ giải thích nền tảng web, không chỉ ra cách một website riêng triển khai player. Chỉ nêu điều đã kiểm tra, giới hạn của mẫu thử và điều chưa thể kết luận.

Khi muốn tìm nội dung thể thao và các trận đấu, độc giả có thể xem Trang KLIVE về các trận bóng đá trực tiếp. Liên kết này dẫn tới trang chủ KLIVE; nó không phải ví dụ kỹ thuật về codec, không xác nhận cấu hình player hoặc khả năng tương thích của một thiết bị.

Nguồn tham khảo

  1. MDN — <video> HTML video embed element
  2. MDN — Media Source Extensions API
  3. MDN — Web video codec guide

Câu hỏi thường gặp

canPlayType và isTypeSupported có trả lời cùng một câu hỏi không?

Không. Một API hỏi khả năng phát của media element theo mô tả loại nội dung; API kia tập trung vào khả năng hỗ trợ kiểu MIME/codec cho SourceBuffer trong MSE.

Nếu isTypeSupported trả về true thì video chắc chắn phát được chứ?

Không. Đây là tín hiệu hỗ trợ tiềm năng; dữ liệu, phân đoạn, tải mạng và bước giải mã thực tế vẫn có thể thất bại.

Có thể dựa vào các API này để biết KLIVE dùng codec gì không?

Không. API không tiết lộ cấu hình triển khai của một website cụ thể; cần bằng chứng trực tiếp từ player hoặc tài nguyên được kiểm tra.