Shortcuts

clips_at_regular_indices

torchcodec.samplers.clips_at_regular_indices(decoder: VideoDecoder, *, num_clips: int = 1, num_frames_per_clip: int = 1, num_indices_between_frames: int = 1, sampling_range_start: int = 0, sampling_range_end: Optional[int] = None, policy: Literal['repeat_last', 'wrap', 'error'] = 'repeat_last') FrameBatch[source]

在规则(等距)索引处采样 clips

Parameters:
  • 解码器 (VideoDecoder) – 用于从中采样片段的VideoDecoder实例。

  • num_clips (int, 可选) – 返回的剪辑数量。默认值:1。

  • num_frames_per_clip (int, 可选) – 每个剪辑的帧数。默认值:1。

  • num_indices_between_frames (int, 可选) – 片段内帧之间的索引数。默认值:1,表示帧是连续的。这有时被称为“扩张”。

  • sampling_range_start (int, optional) – 采样范围的开始, 定义了剪辑可能开始的第一个索引。默认值: 0,即视频的开始。

  • sampling_range_end (intNone, 可选) – 采样范围的结束,定义了剪辑可能开始的最后一个索引。这个值是排他的,即剪辑只能在[sampling_range_start, sampling_range_end)范围内开始。如果为None(默认值),则自动设置该值,以确保剪辑永远不会超出视频的末尾。例如,如果视频中最后一个有效索引是99,且剪辑跨越10帧,则该值设置为99 - 10 + 1 = 90。接受负值,并且等同于len(video) - val。当剪辑超出视频末尾时,policy参数定义了如何构建此类剪辑。

  • policy (str, optional) –

    定义如何构建超出视频末尾的剪辑。这最好通过一个例子来描述: 假设视频中最后一个有效索引是99,并且一个剪辑从索引95开始采样,使用num_frames_per_clip=5num_indices_between_frames=2,剪辑中的帧索引应该是[95, 97, 99, 101, 103]。但是101和103是 无效索引,因此policy参数定义了如何用有效索引替换这些帧:

    • ”repeat_last”:重复剪辑的最后一个有效帧。我们会得到[95, 97, 99, 99, 99]。

    • ”wrap”:绕回到剪辑的开头。我们会得到[95, 97, 99, 95, 97]。

    • ”error”:引发错误。

    默认是“repeat_last”。请注意,当sampling_range_end=None(默认)时,此策略参数不太可能相关。

Returns:

采样的片段,作为一个5D的FrameBatchdata字段的形状是(num_clips, num_frames_per_clips, …),其中…是(H, W, C)或(C, H, W) 取决于VideoDecoderdimension_order参数。pts_secondsduration_seconds字段的形状是(num_clips, num_frames_per_clips)。

Return type:

FrameBatch

使用 clips_at_regular_indices 的示例:

如何采样视频片段

How to sample video clips