Source code for moviepy.video.fx.SuperSample
from dataclasses import dataclass
import numpy as np
from moviepy.Clip import Clip
from moviepy.Effect import Effect
[docs]@dataclass
class SuperSample(Effect):
"""Replaces each frame at time t by the mean of `n_frames` equally spaced frames
taken in the interval [t-d, t+d]. This results in motion blur.
"""
d: float
n_frames: int
[docs] def apply(self, clip: Clip) -> Clip:
"""Apply the effect to the clip."""
def filter(get_frame, t):
timings = np.linspace(t - self.d, t + self.d, self.n_frames)
frame_average = np.mean(
1.0 * np.array([get_frame(t_) for t_ in timings], dtype="uint16"),
axis=0,
)
return frame_average.astype("uint8")
return clip.transform(filter)