VideoEncoder: encode() method
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Secure context: This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.
Note: This feature is available in Dedicated Web Workers.
Phương thức encode() của giao diện VideoEncoder mã hóa bất đồng bộ một VideoFrame.
Dữ liệu đã mã hóa (EncodedVideoChunk) hoặc lỗi sẽ được trả về thông qua các callback được cung cấp cho hàm khởi tạo VideoEncoder.
Cú pháp
encode(frame)
encode(frame, options)
Tham số
frame-
Một đối tượng
VideoFrame. optionsOptional-
Một đối tượng chứa các thành viên sau:
keyFrameOptional-
Một
boolean, mặc định làfalse, cho tác nhân người dùng quyền linh hoạt để quyết định liệu khung hình này có nên được mã hóa như một khung hình chính hay không. Nếu làtrue, điều này cho biết khung hình đã cho phải được mã hóa như một khung hình chính. vp9Optional-
Tùy chọn mã hóa cho codec VP9.
quantizer-
Giá trị quantizer khung hình từ 0 đến 63. Chỉ có hiệu lực nếu
VideoEncoderđược cấu hình với chế độ tốc độ bitquantizer.
av1Optional-
Tùy chọn mã hóa cho codec AV1.
quantizer-
Giá trị quantizer khung hình từ 0 đến 63. Chỉ có hiệu lực nếu
VideoEncoderđược cấu hình với chế độ tốc độ bitquantizer.
avcOptional-
Tùy chọn mã hóa cho codec AVC (H.264).
quantizer-
Giá trị quantizer khung hình từ 0 đến 51. Chỉ có hiệu lực nếu
VideoEncoderđược cấu hình với chế độ tốc độ bitquantizer.
hevcOptional-
Tùy chọn mã hóa cho codec HEVC (H.265).
quantizer-
Giá trị quantizer khung hình từ 0 đến 51. Chỉ có hiệu lực nếu
VideoEncoderđược cấu hình với chế độ tốc độ bitquantizer.
Giá trị trả về
Không có (undefined).
Ngoại lệ
InvalidStateErrorDOMException-
Được ném nếu
statekhông phải là"configured". DataErrorDOMException-
Được ném nếu góc xoay và lật của đối tượng
frameđã cho không khớp với góc xoay và lật củaVideoFrameđầu tiên được truyền vàoencode()(gọi là "hướng hiện hoạt").
Ví dụ
Trong ví dụ sau, encode được truyền một VideoFrame cùng tham số options cho biết khung hình này phải được coi là khung hình chính.
encoder.encode(frame, { keyFrame: true });
Đặt giá trị QP theo từng khung hình để mã hóa các khung hình riêng lẻ.
const encoder = new VideoEncoder(init);
const encoderConfig = {
codec: "vp09.00.10.08",
width: 800,
height: 600,
bitrateMode: "quantizer",
framerate: 30,
latencyMode: "realtime",
};
encoder.configure(encoderConfig);
const encodeOptions = { keyFrame: false };
const qp = calculateQp(codec, frame);
if (codec.includes("vp09")) {
encodeOptions.vp9 = { quantizer: qp };
} else if (codec.includes("av01")) {
encodeOptions.av1 = { quantizer: qp };
} else if (codec.includes("avc")) {
encodeOptions.avc = { quantizer: qp };
} else if (codec.includes("hvc1") || codec.includes("hev1")) {
encodeOptions.hevc = { quantizer: qp };
}
encoder.encode(frame, encodeOptions);
Thông số kỹ thuật
| Specification |
|---|
| WebCodecs> # dom-videoencoder-encode> |