VideoFrame: copyTo() 方法

Baseline 2024
新推出

自 2024 年 9 月起,此功能已可在最新裝置和瀏覽器版本上使用。此功能可能無法在舊裝置或瀏覽器上使用。

注意:此功能在 專用 Web Workers 中可用。

VideoFrame 介面的 copyTo() 方法會將 VideoFrame 的內容複製到一個 ArrayBuffer 中。

語法

js
copyTo(destination)
copyTo(destination, options)

引數

destination

用於複製到的 ArrayBufferTypedArrayDataView

options 可選

一個包含以下內容的 *)

rect 可選

要從 VideoFrame 中複製的畫素矩形。如果未指定,將使用 visibleRect。其格式為一個字典物件,包含:

  • x:x 座標。
  • y:y 座標。
  • width:幀的寬度。
  • height:幀的高度。
layout 可選

一個列表,包含 VideoFrame 中每個平面的以下值:

offset

一個整數,表示給定平面開始的偏移量(以位元組為單位)。

stride(步幅)

一個整數,表示平面中每一行使用的位元組數(包括填充)。平面可能不會重疊。如果未指定 layout,則平面將緊密打包。

format 可選

destination 中畫素資料的畫素格式。可以設定為 "RGBA""RGBX""BGRA""BGRX"。如果未指定,將使用 format

colorSpace 可選

指定 destination 中畫素資料的顏色空間。可以設定為 sRGB 顏色空間"srgb"display-p3 顏色空間"display-p3"。僅適用於 RGB 畫素格式。如果未指定,將使用 "srgb"

返回值

一個 Promise,當複製完成後,該 Promise 會解析為複製的佈局。

示例

以下示例複製了 videoFrame 的全部內容。

js
let buffer = new Uint8Array(videoFrame.allocationSize());
let layout = await videoFrame.copyTo(buffer);

以下示例將 videoFrame 的一部分轉換為 RGB 格式。

js
const videoRect = {
  x: 100,
  y: 100,
  width: 80,
  height: 60,
};
const options = {
  rect: videoRect,
  format: "RGBX",
  colorSpace: "display-p3",
};
const size = videoFrame.allocationSize(options);
const buffer = new ArrayBuffer(size);
const layout = await videoFrame.copyTo(buffer, options);

規範

規範
WebCodecs
# dom-videoframe-copyto

瀏覽器相容性