Source code for moviepy.video.fx.Loop

from dataclasses import dataclass

from moviepy.Clip import Clip
from moviepy.Effect import Effect


[docs] @dataclass class Loop(Effect): """ Returns a clip that plays the current clip in an infinite loop. Ideal for clips coming from GIFs. Parameters ---------- n Number of times the clip should be played. If `None` the the clip will loop indefinitely (i.e. with no set duration). duration Total duration of the clip. Can be specified instead of n. """ n: int = None duration: float = None
[docs] def apply(self, clip: Clip) -> Clip: """Apply the effect to the clip.""" if clip.duration is None: raise ValueError("Attribute 'duration' not set") previous_duration = clip.duration clip = clip.time_transform( lambda t: t % previous_duration, apply_to=["mask", "audio"] ) if self.n: self.duration = self.n * previous_duration if self.duration: clip = clip.with_duration(self.duration) return clip