快捷方式

clips_at_random_timestamps

torchcodec.samplers.clips_at_random_timestamps(decoder, *, num_clips: int = 1, 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]

在随机时间戳处采样片段

参数:
  • decoder (VideoDecoder) – 用于从中采样片段的 VideoDecoder 实例。

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

  • 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, 可选) –

    定义了如何构建超出视频末尾的片段。最好通过一个示例来描述:假设视频中最后一个有效的(可查找的)时间戳是 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(默认值)时,此策略参数不太可能相关。

返回值:

采样到的片段,以 5D FrameBatch 形式返回。data 字段的形状为 (num_clips, num_frames_per_clips, …),其中 … 根据 VideoDecoderdimension_order 参数,可以是 (H, W, C) 或 (C, H, W)。pts_secondsduration_seconds 字段的形状为 (num_clips, num_frames_per_clips)。

返回类型:

FrameBatch

使用 clips_at_random_timestamps 的示例

如何采样视频片段

如何采样视频片段

文档

获取 PyTorch 的全面开发者文档

查看文档

教程

获取针对初学者和高级开发者的深度教程

查看教程

资源

查找开发资源并获得问题解答

查看资源