generated from thinkode/modelRepository
initial commit and version 1.0
This commit is contained in:
30
moviepy/video/fx/MakeLoopable.py
Normal file
30
moviepy/video/fx/MakeLoopable.py
Normal file
@@ -0,0 +1,30 @@
|
||||
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
|
||||
|
||||
|
||||
@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
|
||||
|
||||
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
|
||||
)
|
||||
Reference in New Issue
Block a user