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
)