MediaSource: endOfStream() 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 endOfStream() của giao diện MediaSource báo hiệu kết thúc của luồng.
Cú pháp
endOfStream()
endOfStream(endOfStreamError)
Tham số
endOfStreamErrorOptional-
Một chuỗi đại diện cho lỗi cần ném ra khi đến cuối luồng. Các giá trị có thể là:
network-
Kết thúc phát lại và báo hiệu rằng đã xảy ra lỗi mạng. Điều này có thể được dùng để tạo bộ xử lý lỗi tùy chỉnh liên quan đến luồng media. Ví dụ: bạn có thể có một hàm xử lý các yêu cầu media chunk, tách biệt với các yêu cầu mạng khác. Khi bạn thực hiện yêu cầu
fetch()cho một media chunk và nhận được lỗi mạng, bạn có thể muốn gọiendOfStream('network'), hiển thị thông báo mô tả trong giao diện, và có thể thử lại yêu cầu mạng ngay lập tức hoặc chờ đến khi mạng hoạt động trở lại. decode-
Kết thúc phát lại và báo hiệu rằng đã xảy ra lỗi giải mã. Điều này có thể được dùng để cho biết rằng đã xảy ra lỗi phân tích cú pháp khi lấy dữ liệu media; có thể dữ liệu bị hỏng, hoặc được mã hóa bằng codec mà trình duyệt không biết cách giải mã.
Giá trị trả về
Không có (undefined).
Ngoại lệ
InvalidStateErrorDOMException-
Ném ra nếu
MediaSource.readyStatekhông bằngopen, hoặc một hoặc nhiều đối tượngSourceBuffertrongMediaSource.sourceBuffersđang được cập nhật (tức là thuộc tínhSourceBuffer.updatingcủa chúng làtrue).
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.
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-endofstream> |