|
|
|
@ -1,11 +1,14 @@
|
|
|
|
|
from __future__ import annotations
|
|
|
|
|
|
|
|
|
|
import re
|
|
|
|
|
import math
|
|
|
|
|
from typing import Tuple
|
|
|
|
|
from utils import settings
|
|
|
|
|
|
|
|
|
|
from PIL import ImageFont, Image, ImageDraw, ImageEnhance
|
|
|
|
|
from moviepy.video.VideoClip import VideoClip, ImageClip
|
|
|
|
|
from moviepy.video.compositing.CompositeVideoClip import CompositeVideoClip
|
|
|
|
|
from moviepy.video.io.VideoFileClip import VideoFileClip
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Video:
|
|
|
|
@ -53,3 +56,17 @@ class Video:
|
|
|
|
|
# Overlay the img clip on the first video clip
|
|
|
|
|
self.video = CompositeVideoClip([self.video, img_clip])
|
|
|
|
|
return self.video
|
|
|
|
|
|
|
|
|
|
def add_overlay(self):
|
|
|
|
|
# Get duration for the entire video to place the overlay at the correct time
|
|
|
|
|
video_duration = self.video.duration
|
|
|
|
|
|
|
|
|
|
overlayName = settings.config["settings"]["sub_overlay_name"]
|
|
|
|
|
|
|
|
|
|
subOverlayClip = VideoFileClip((f"assets/subOverlay/{overlayName}.mov"), has_mask=True)
|
|
|
|
|
subOverlayClip.set_pos('center')
|
|
|
|
|
|
|
|
|
|
placeTime = math.floor(video_duration - subOverlayClip.duration) - 3
|
|
|
|
|
|
|
|
|
|
self.video = CompositeVideoClip([self.video, subOverlayClip.set_start(placeTime)])
|
|
|
|
|
return self.video
|
|
|
|
|