Source code for moviepy.video.fx.MakeLoopable

from dataclasses import dataclass

from moviepy.Clip import Clip
from moviepy.Effect import Effect
from moviepy.video.compositing.CompositeVideoClip import CompositeVideoClip
from moviepy.video.fx.CrossFadeIn import CrossFadeIn


[docs] @dataclass class MakeLoopable(Effect): """Makes the clip fade in progressively at its own end, this way it can be looped indefinitely. Parameters ---------- overlap_duration : float Duration of the fade-in (in seconds). """ overlap_duration: float
[docs] def apply(self, clip: Clip) -> Clip: """Apply the effect to the clip.""" clip2 = clip.with_effects([CrossFadeIn(self.overlap_duration)]).with_start( clip.duration - self.overlap_duration ) return CompositeVideoClip([clip, clip2]).subclipped( self.overlap_duration, clip.duration )