Spaces:
Sleeping
Sleeping
File size: 1,082 Bytes
9459cd0 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | """
Subtitle Engine. v1 burns in SRT/ASS via ffmpeg's subtitles filter, styled
per the active template. Animated word-highlight/karaoke is a v2 item that
will require switching burn-in to per-frame drawtext or ASS \\k tags.
"""
import os
# style presets keyed by name; templates reference these by `subtitle.style`
STYLE_PRESETS = {
"default": "FontName=Noto Sans,FontSize=20,PrimaryColour=&HFFFFFF&,OutlineColour=&H000000&,BorderStyle=1,Outline=2",
"financial": "FontName=Montserrat,FontSize=22,PrimaryColour=&H00D7FF&,OutlineColour=&H000000&,BorderStyle=1,Outline=2,Bold=1",
}
def build_subtitle_filter(subtitle_path: str, style: str = "default") -> str:
force_style = STYLE_PRESETS.get(style, STYLE_PRESETS["default"])
ext = os.path.splitext(subtitle_path)[1].lower()
# ffmpeg's `subtitles` filter handles srt/ass/vtt uniformly; path must be
# escaped for the filter graph (colons and backslashes are special).
escaped_path = subtitle_path.replace("\\", "/").replace(":", "\\:")
return f"subtitles='{escaped_path}':force_style='{force_style}'"
|