Skip to main content
Vane Data / Reference

get_video_frame_by_idx

get_video_frame_by_idx returns one IMAGE('RGB') at a zero-based presentation-order frame index. Without an index, lookup uses sequential decoding from stream start, including for late time windows.

Signature

example.py
vane.get_video_frame_by_idx(
    value, idx, *, on_error="raise",
    max_input_bytes=8589934592, max_decoded_frames=1000000, max_pixels=33554432,
    max_output_bytes=67108864, index=None,
) -> Expression

SQL: get_video_frame_by_idx(file, idx, on_error, max_input_bytes, max_decoded_frames, max_pixels, max_output_bytes, index).

Parameters

NameTypeDescriptionDefault
valueVIDEOFILE value or ExpressionSource videoRequired
idxBIGINT or ExpressionZero-based presentation-order frame indexRequired
on_error"raise" / "null""null" suppresses only classified encoded-format failures"raise"
max_input_bytesInteger or ExpressionEncoded input limit8 GiB (maximum 16 GiB)
max_decoded_framesInteger or ExpressionPer-input decoded-frame limit, including filtered frames1,000,000
max_pixelsInteger or ExpressionInput and output pixel limit32 Mi pixels
max_output_bytesInteger or ExpressionScalar payload budget64 MiB (maximum 256 MiB)
indexIndex BLOB or ExpressionVerified seek index from build_video_index; NULL uses sequential decodingNone

Returns and errors

Returns one IMAGE('RGB'). A NULL input or idx returns NULL. A missing frame raises an index-range error, or returns NULL under on_error="null"; negative indices always raise.

Example

query.sql
SELECT get_video_frame_by_idx(file, 10, on_error => 'null') AS frame
FROM (SELECT video_file('clip.mp4') AS file);