ImageDecoder: decode() 方法
注意:此功能在 專用 Web Workers 中可用。
ImageDecoder 介面的 decode() 方法用於將一個控制訊息加入佇列,以解碼影像的某一幀。
語法
js
decode()
decode(options)
引數
options可選-
包含以下成員的物件
frameIndex可選-
一個整數,表示要解碼的幀的索引。預設為
0(第一幀)。 completeFramesOnly可選-
一個
boolean值,預設為true。當設定為false時,表示對於漸進式影像,解碼器可能會輸出一個細節程度較低的影像。當設定為false時,decode()返回的 Promise 將針對每個新的細節級別解析一次。
返回值
一個 Promise,它會解析為一個包含以下成員的物件:
圖片-
一個
VideoFrame,包含已解碼的影像。 完成-
一個
boolean值,如果為true,則表示image包含最終的完整細節輸出。
異常
如果發生錯誤,Promise 將會解析為以下異常
InvalidStateErrorDOMException-
當滿足以下任一條件時返回
close為 true,表示close()已經被呼叫。- 請求的幀不存在。
示例
已完成影像幀的同步解碼
以下示例解碼第二幀(索引為 1)並將結果 VideoFrame 列印到控制檯。
js
let result = await imageDecoder.decode({ frameIndex: 1 });
console.log(result.image);
漸進式影像幀的部分解碼
以下示例反覆解碼第一幀,直到其完整。
js
let complete = false;
while (!complete) {
// The promise returned by `decode()` will only resolve when a new
// level of detail is available or the frame is complete. I.e.,
// calling `decode()` in a loop like this is won't needlessly spin.
let result = await imageDecode.decode({ completeFramesOnly: false });
// Do something with `result.image`.
complete = result.complete;
}
規範
| 規範 |
|---|
| WebCodecs # dom-imagedecoder-decode |
瀏覽器相容性
載入中…