ElevenClip-AI / backend /src /processing /emoji_overlay.py
JakgritB
Deploy safe hackathon demo
102f4d2
Raw
History Blame Contribute Delete
1.03 kB
"""Emoji and text overlay utilities for HRE pipeline."""
import subprocess
from pathlib import Path
from loguru import logger
def add_emoji_overlay(
video_path: Path,
emoji: str,
output_path: Path,
x: str = "w-100",
y: str = "50",
size: int = 80,
start_sec: float = 0.0,
end_sec: float = 3.0,
) -> Path:
"""Add emoji text overlay to video using ffmpeg drawtext."""
escaped = emoji.replace("'", "\\'").replace(":", "\\:")
vf = (
f"drawtext=text='{escaped}'"
f":fontsize={size}:x={x}:y={y}"
f":enable='between(t,{start_sec},{end_sec})'"
)
cmd = [
"ffmpeg", "-y", "-i", str(video_path),
"-vf", vf,
"-c:v", "libx264", "-c:a", "copy",
str(output_path),
]
result = subprocess.run(cmd, capture_output=True, text=True)
if result.returncode == 0 and output_path.exists():
return output_path
logger.warning(f"Emoji overlay failed: {result.stderr[-200:]}")
return video_path # fallback to original