VideoFrame: 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.
VideoFrame() コンストラクターは、動画のフレームを表す VideoFrame オブジェクトを生成します。
構文
new VideoFrame(image)
new VideoFrame(image, options)
new VideoFrame(data, options)
引数
最初の型のコンストラクター(上述)は、画像から新しい VideoFrame を作成します。引数は以下のとおりです。
image-
新しい
VideoFrameの画像データを格納する画像。SVGImageElement,HTMLVideoElement,HTMLCanvasElement,ImageBitmap,OffscreenCanvas, 他のVideoFrameのオブジェクトのいずれかになります。 options省略可-
以下のものを含むオブジェクトです。
duration省略可-
フレームの再生時間をマイクロ秒単位で表す整数。
timestamp-
フレームのタイムスタンプをマイクロ秒単位で表す整数。
alpha省略可-
アルファチャンネルを扱うときにユーザーエージェントがどのように振る舞うべきかを記述する文字列。既定値は "keep" です。
"keep": ユーザーエージェントがアルファチャンネルデータを保存することを示します。"discard": ユーザーエージェントがアルファチャンネルを無視または除去すべきことを示します。
visibleRect省略可-
VideoFrameの可視長方形を表すオブジェクトで、次のものを含みます。 displayWidth省略可-
アスペクト比調整後に表示される
VideoFrameの幅。 displayHeight省略可-
アスペクト比調整後に表示される
VideoFrameの高さ。
2 つ目のコンストラクター(上記参照)は、新しい VideoFrame を ArrayBuffer から作成します。引数は以下の通りです。
data-
新しい
VideoFrameのデータを保持するArrayBuffer、TypedArray、DataViewのいずれかです。 options-
以下のものを持つオブジェクトです。
format-
動画のピクセル形式を表す文字列。以下の文字列のいずれかで、完全な説明は
formatプロパティのページにあります。"I420""I420A""I422""I444""NV12""RGBA""RGBX""BGRA""BGRX"
codedWidth-
ピクセル単位の
VideoFrameの幅(不可視のパディングを含む可能性があり、比率の調整を考慮する前の値)。 codedHeight-
ピクセル単位の
VideoFrameの高さ(不可視のパディングを記載する可能性があり、比率調整を考慮する前の値)。 timestamp-
フレームのタイムスタンプをマイクロ秒単位で表す整数。
duration省略可-
フレームの再生時間をマイクロ秒単位で表す整数。
layout省略可-
VideoFrame内の各プレーンについて、以下の値を格納したリスト。 visibleRect省略可-
VideoFrame` の可視長方形を表すオブジェクトで、以下のものを含みます。
displayWidth省略可-
アスペクト比調整後に表示される
VideoFrameの幅。 displayHeight省略可-
アスペクト比調整後に表示される
VideoFrameの高さ。 colorSpace-
VideoFrame` の色空間を表すオブジェクトで、以下のものを含みます。
primaries-
文字列で、
VideoColorSpace.primariesプロパティのページで記述されている、動画の色のプライマリーを表します。 transfer-
文字列で、
VideoColorSpace.transferプロパティのページで記述されている、動画の色変換関数を表します。 matrix-
文字列で、
VideoColorSpace.matrixプロパティのページで記述されている、動画の色行列を表します。 fullRange-
論理値です。
trueの場合、フルレンジの色値が使用されていること示します。
transfer-
VideoFrameが切り離して所有権を取るArrayBufferの配列。配列にdataをバッキングするArrayBufferが格納されている場合、VideoFrameはそのバッファーからコピーするのではなく、そのバッファーを直接使用します。
例
次の例は WebCodecs による動画処理の記事から引用しています。この最初の例では、キャンバスから VideoFrame を作成しています。
const cnv = document.createElement("canvas");
// draw something on the canvas
// ...
let frame_from_canvas = new VideoFrame(cnv, { timestamp: 0 });
In the following example a VideoFrame is created from a TypedArray.
const pixelSize = 4;
let init = {
timestamp: 0,
codedWidth: 320,
codedHeight: 200,
format: "RGBA",
};
let data = new Uint8Array(init.codedWidth * init.codedHeight * pixelSize);
for (let x = 0; x < init.codedWidth; x++) {
for (let y = 0; y < init.codedHeight; y++) {
let offset = (y * init.codedWidth + x) * pixelSize;
data[offset] = 0x7f; // Red
data[offset + 1] = 0xff; // Green
data[offset + 2] = 0xd4; // Blue
data[offset + 3] = 0x0ff; // Alpha
}
}
init.transfer = [data.buffer];
let frame = new VideoFrame(data, init);
仕様書
| Specification |
|---|
| WebCodecs> # dom-videoframe-videoframe> |