Source code for moviepy.video.fx.Scroll

from moviepy.Effect import Effect


[docs] class Scroll(Effect): """Effect that scrolls horizontally or vertically a clip, e.g. to make end credits Parameters ---------- w, h The width and height of the final clip. Default to clip.w and clip.h x_speed, y_speed The speed of the scroll in the x and y directions. x_start, y_start The starting position of the scroll in the x and y directions. apply_to Whether to apply the effect to the mask too. """ def __init__( self, w=None, h=None, x_speed=0, y_speed=0, x_start=0, y_start=0, apply_to="mask", ): self.w = w self.h = h self.x_speed = x_speed self.y_speed = y_speed self.x_start = x_start self.y_start = y_start self.apply_to = apply_to
[docs] def apply(self, clip): """Apply the effect to the clip.""" if self.h is None: self.h = clip.h if self.w is None: self.w = clip.w x_max = self.w - 1 y_max = self.h - 1 def filter(get_frame, t): x = int(max(0, min(x_max, self.x_start + round(self.x_speed * t)))) y = int(max(0, min(y_max, self.y_start + round(self.y_speed * t)))) return get_frame(t)[y : y + self.h, x : x + self.w] return clip.transform(filter, apply_to=self.apply_to)