Shortcuts

clips_at_regular_timestamps

torchcodec.samplers.clips_at_regular_timestamps(decoder, *, seconds_between_clip_starts: float, num_frames_per_clip: int = 1, seconds_between_frames: Optional[float] = None, sampling_range_start: Optional[float] = None, sampling_range_end: Optional[float] = None, policy: Literal['repeat_last', 'wrap', 'error'] = 'repeat_last') FrameBatch[source]

在规则(等距)时间戳处采样clips

注意

为了与现有的采样API(如torchvision)保持一致,此采样器采用seconds_between_clip_starts参数而不是num_clips。如果您发现支持num_clips会有用,请通过提交功能请求告知我们。

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

  • seconds_between_clip_starts (float) – 每个剪辑开始之间的间隔(以秒为单位)。

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

  • seconds_between_frames (floatNone, 可选) – 每个剪辑中帧之间的时间(以秒为单位)。更准确地说,这定义了帧采样点之间的时间,即我们采样帧的时间戳。由于帧跨越时间间隔,剪辑中帧的开始时间可能不会完全按照seconds_between_frames间隔 - 但平均而言,它们会是。默认值为None,设置为平均帧持续时间(1/average_fps)。

  • sampling_range_start (floatNone, 可选) – 采样范围的开始,定义了剪辑可能开始的第一个时间戳(以秒为单位)。默认值:None,对应于视频的开始。(注意:有些视频从负值开始,这就是为什么默认值不是0)。

  • sampling_range_end (floatNone, 可选) – 采样范围的结束,定义了剪辑可能开始的最后一个时间戳(以秒为单位)。该值是独占的,即剪辑只能在[sampling_range_start, sampling_range_end)范围内开始。如果为None(默认值),则自动设置该值,以确保剪辑不会超出视频的结束时间,即设置为end_video_seconds - (num_frames_per_clip - 1) * seconds_between_frames。当剪辑超出视频结束时,policy参数定义了如何构建此类剪辑。

  • policy (str, optional) –

    定义如何构建超出视频末尾的剪辑。这最好通过一个例子来描述: 假设视频中最后一个有效(可搜索)的时间戳是10.9,并且 一个剪辑被采样以在时间戳10.5开始,使用 num_frames_per_clip=5seconds_between_frames=0.2,剪辑中帧的 采样时间戳应该是 [10.5, 10.7, 10.9, 11.1, 11.2]。但11.1和11.2是无效的 时间戳,因此 policy 参数定义了如何替换这些 帧,使用有效的采样时间戳:

    • ”repeat_last”:重复剪辑的最后一个有效帧。我们将 得到在时间戳 [10.5, 10.7, 10.9, 10.9, 10.9] 采样的帧。

    • ”wrap”:绕回到剪辑的开头。我们将得到 在时间戳 [10.5, 10.7, 10.9, 10.5, 10.7] 采样的帧。

    • ”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_timestamps 的示例:

如何采样视频片段

How to sample video clips