Video#
型定義#
- 型表現:
Video<Color,3> - 型形式:Field Type Format
- 意味:映像として意味付けされたColor Field
- 値の構造:Color
- Dimension:3固定。X,Y,Time
- 互換性:Video。画像処理入力では現在時刻のImageを内部観測し、明示的なSliceでは指定時刻を使う
Video<Color,3>は三次元のColor Fieldを映像として扱う独立した意味型です。DimensionはX,Y,Timeの順です。Timeという独立したValue型や特別なField型を作りません。Timeは三つ目のDimensionの意味です。
Shapeと時間配置#
Shape<1920,1080,240>の240は第三Dimensionのサンプル数です。型表現にFrameという保存構造を固定しません。
時間配置の一次情報は第三Coordinateです。Regularでは開始時刻と正の間隔、Explicitでは厳密に増加する時刻列を持ちます。一定レート・可変レート・不均一サンプリングを同じ構造で表現できます。時間単位と基準はCoordinateに属します。
例えば秒を単位としてstart=0, step=1/24, count=240とすれば、先頭は0秒、末尾は239/24秒です。全体の再生区間の終端を推定する規則と、末尾サンプルの位置は別です。
Attribute#
Frame Rate、Timecode Rule、Start Timecodeおよび画像用のStandard Attributeを持てます。Frame Rateは任意の名目情報です。Coordinateと食い違っても、時刻列を上書きしません。固定レートを必要とする操作では、明示的な再サンプリングを要求します。
変換と操作#
Image一枚への変換は時刻選択と補間方針を伴うSliceです。Imageを並べたVideoの作成は、画像の整合と時間Coordinateを必要とするStackです。どちらも単なる型名の付け替えではありません。Grid<Color,3>との意味付け変更も明示的です。
利用可能範囲#
FileのVideo Dataモードは、対応codecの動画コンテナをVideoとして読み込みます。 通常のVideoモードは、速度・開始フレーム・Repeatを適用した現在時刻のImageを返します。 Video自体の時間配置は実際のPTSによるCoordinateです。Video FrameのSample/Timeで 独立してImageを観測することもできます。
| 選択方法 | CNL | 時間の扱い |
|---|---|---|
| Sample | video_frame(video,sample_index) | 0始まりの正確な整数。範囲外はエラー |
| Time | video_frame_at_time(video,time) | 指定座標以前の最新サンプルを保持。範囲外は先頭/末尾 |
fn main(video:Video<Color,3>,time:Float)->Image<Color,2>{
return video_frame_at_time(video,time);
}
File動画のTime単位は秒です。画像処理入力での内部観測とFileの通常Videoは、既定でAE/Previewの評価時刻を使います。明示的なTimeには対応する純粋なFloat32式も使えます。秒とサンプル番号を混同せず、一般のVideoではCoordinateの単位を確認してください。補間はせず、元のTime Coordinateとsource.timeの精度・意味を保持します。
Output/Visualizeの既定観測は現在時刻です。Sample Indexを明示した静的観測は 0始まりのサンプル番号として維持し、秒やAE時刻へ読み替えません。Sampleの範囲外は エラー、Timeの範囲外は先頭・末尾での保持です。
paged取得・必要フレームだけの復号、同一取得状態の共有、内部の現在時刻観測があります。 初回取得の高速化、時間補間、Preview内の独立した再生・scrub操作、実AEでの長尺・全codec・MFRの確認は残ります。Video Codecの二枚の画像による符号化実験は別機能です。