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

js
encode(frame)
encode(frame, options)

Tham số

frame

Một đối tượng VideoFrame.

options Optional

Một đối tượng chứa các thành viên sau:

keyFrame Optional

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.

vp9 Optional

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 độ bit quantizer.

av1 Optional

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 độ bit quantizer.

avc Optional

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 độ bit quantizer.

hevc Optional

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 độ bit quantizer.

Giá trị trả về

Không có (undefined).

Ngoại lệ

InvalidStateError DOMException

Được ném nếu state không phải là "configured".

DataError DOMException

Đượ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ủa VideoFrame đầu tiên được truyền vào encode() (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.

js
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ẻ.

js
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

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