VideoFrame
Baseline
2024
*
Newly available
Since September 2024, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.
* Some parts of this feature may have varying levels of support.
Note: This feature is available in Dedicated Web Workers.
Giao diện VideoFrame của Web Codecs API đại diện cho một khung hình của video.
VideoFrame là một đối tượng có thể chuyển giao.
Mô tả
Một đối tượng VideoFrame có thể được tạo hoặc truy cập theo nhiều cách. MediaStreamTrackProcessor chia một media track thành các đối tượng VideoFrame riêng lẻ.
VideoFrame là một nguồn ảnh và có hàm khởi tạo chấp nhận bất kỳ nguồn canvas nào khác (
một SVGImageElement,
một HTMLVideoElement,
một HTMLCanvasElement,
một ImageBitmap,
một OffscreenCanvas,
hoặc một VideoFrame khác).
Điều này có nghĩa là có thể tạo khung hình từ một phần tử ảnh hoặc video.
Hàm khởi tạo thứ hai cho phép tạo một VideoFrame từ biểu diễn pixel nhị phân của nó trong một ArrayBuffer, một TypedArray, hoặc một DataView.
Các khung hình đã tạo có thể được chuyển thành media track, ví dụ với giao diện MediaStreamTrackGenerator tạo một media track từ luồng khung hình.
Hàm khởi tạo
VideoFrame()-
Tạo một đối tượng
VideoFramemới.
Thuộc tính phiên bản
VideoFrame.formatRead only-
Trả về định dạng pixel của
VideoFrame. VideoFrame.codedWidthRead only-
Trả về chiều rộng của
VideoFrametính bằng pixel, có thể bao gồm phần đệm không hiển thị, và trước khi xem xét các điều chỉnh tỷ lệ khung hình tiềm năng. VideoFrame.codedHeightRead only-
Trả về chiều cao của
VideoFrametính bằng pixel, có thể bao gồm phần đệm không hiển thị, và trước khi xem xét các điều chỉnh tỷ lệ khung hình tiềm năng. VideoFrame.codedRectRead only-
Trả về một
DOMRectReadOnlyvới chiều rộng và chiều cao khớp vớicodedWidthvàcodedHeight. VideoFrame.visibleRectRead only-
Trả về một
DOMRectReadOnlymô tả hình chữ nhật hiển thị của các pixel choVideoFramenày. VideoFrame.displayWidthRead only-
Trả về chiều rộng của
VideoFramekhi được hiển thị sau khi áp dụng điều chỉnh aspect ratio. VideoFrame.displayHeightRead only-
Trả về chiều cao của
VideoFramekhi được hiển thị sau khi áp dụng điều chỉnh tỷ lệ khung hình. VideoFrame.durationRead only-
Trả về một số nguyên cho biết thời lượng của video tính bằng microsecond.
VideoFrame.timestampRead only-
Trả về một số nguyên cho biết dấu thời gian của video tính bằng microsecond.
VideoFrame.colorSpaceRead only-
Trả về một đối tượng
VideoColorSpace. VideoFrame.flipRead only Experimental-
Trả về liệu
VideoFramecó bị phản chiếu theo chiều ngang hay không. VideoFrame.rotationRead only Experimental-
Trả về góc xoay (0, 90, 180, hoặc 270) tính bằng độ theo chiều kim đồng hồ được áp dụng cho
VideoFrame. Các số tùy ý (bao gồm số âm) được làm tròn đến góc phần tư tiếp theo.
Phương thức phiên bản
VideoFrame.allocationSize()-
Trả về số byte cần thiết để chứa
VideoFrameđược lọc theo các tùy chọn được truyền vào phương thức. VideoFrame.copyTo()-
Sao chép nội dung của
VideoFramevào mộtArrayBuffer. VideoFrame.clone()-
Tạo một đối tượng
VideoFramemới tham chiếu đến cùng tài nguyên media với bản gốc. VideoFrame.close()-
Xóa tất cả trạng thái và giải phóng tham chiếu đến tài nguyên media.
Ví dụ
Trong ví dụ sau, các khung hình được trả về từ MediaStreamTrackProcessor, sau đó được mã hóa. Xem ví dụ đầy đủ và tìm hiểu thêm trong bài viết Video processing with WebCodecs.
let frameCounter = 0;
const track = stream.getVideoTracks()[0];
const mediaProcessor = new MediaStreamTrackProcessor(track);
const reader = mediaProcessor.readable.getReader();
while (true) {
const result = await reader.read();
if (result.done) break;
let frame = result.value;
if (encoder.encodeQueueSize > 2) {
// Too many frames in flight, encoder is overwhelmed
// let's drop this frame.
frame.close();
} else {
frameCounter++;
const insertKeyframe = frameCounter % 150 === 0;
encoder.encode(frame, { keyFrame: insertKeyframe });
frame.close();
}
}
Thông số kỹ thuật
| Specification |
|---|
| WebCodecs> # videoframe-interface> |