ClipForge-AI / modules /subtitle_burner.py
Adityasv99's picture
Clean repository for Hugging Face deployment
47b4017
Raw
History Blame Contribute Delete
1.01 kB
from moviepy import VideoFileClip, TextClip, CompositeVideoClip
import pysrt
import os
OUTPUT_DIR = "assets/outputs"
os.makedirs(OUTPUT_DIR, exist_ok=True)
def burn_subtitles(video_path, subtitle_path):
video = VideoFileClip(video_path)
subs = pysrt.open(subtitle_path)
subtitle_clips = []
for sub in subs:
start = sub.start.ordinal / 1000
end = sub.end.ordinal / 1000
txt_clip = TextClip(
text=sub.text,
font_size=40,
color="white",
stroke_color="black",
stroke_width=2,
size=(int(video.w * 0.9), None),
method="caption"
)
txt_clip = txt_clip.with_start(start).with_end(end).with_position(("center","bottom"))
subtitle_clips.append(txt_clip)
final = CompositeVideoClip([video] + subtitle_clips)
output_path = os.path.join(OUTPUT_DIR, "captioned_video.mp4")
final.write_videofile(output_path, codec="libx264")
return output_path