feat: Introduce ffmpeg-service using FastAPI to process video, generate TTS with synchronized subtitles, and manage fonts.

This commit is contained in:
Michael committed 2026-03-03 14:28:01 +01:00
1 parent 101e27a2fd
commit c3356c2140
3 files changed
+22 -4

No files matched your search

Binary file not shown.
+7 -3
View File
@@ -404,7 +404,11 @@ Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
def generate_simple_ass( def generate_simple_ass(
text: str, ass_path: Path, font_size: int = 65, total_duration: float = None text: str,
ass_path: Path,
font_size: int = 65,
total_duration: float = None,
delay: float = 0.0,
): ):
"""Generate TikTok-style ASS subtitle file with karaoke highlight effect. """Generate TikTok-style ASS subtitle file with karaoke highlight effect.
@@ -446,7 +450,7 @@ Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
""" """
events = "" events = ""
current_time = 0.0 current_time = delay
# Calculate total characters across all chunks for proportional timing # Calculate total characters across all chunks for proportional timing
total_chars = sum(len(w) for chunk in chunks for w in chunk) total_chars = sum(len(w) for chunk in chunks for w in chunk)
@@ -846,7 +850,7 @@ async def process_reel(request: ReelRequest, x_api_key: str = Header(None)):
) )
std_ass_path = job_dir / "std_text.ass" std_ass_path = job_dir / "std_text.ass"
# Use fontsize 40 by default for standard text # Use fontsize 40 by default for standard text
generate_simple_ass(request.text, std_ass_path, font_size=40) generate_simple_ass(request.text, std_ass_path, font_size=40, delay=2.0)
ass_path_str = str(std_ass_path).replace("\\", "/").replace(":", "\\:") ass_path_str = str(std_ass_path).replace("\\", "/").replace(":", "\\:")
text_filter = f",subtitles='{ass_path_str}'" text_filter = f",subtitles='{ass_path_str}'"
+15 -1
View File
@@ -6,7 +6,7 @@ Ajout d'une fonctionnalité complète de création de Reels Facebook permettant
## Current Focus ## Current Focus
**Phase: EXECUTION** - Implémenter l'effet Outro (Logo central + nom du magasin) à la fin des Réels via le Party Mode. **Phase: EXECUTION** - Conversation libre avec l'Agent BMad Master (Chat with the Agent).
## Master Plan ## Master Plan
@@ -207,6 +207,20 @@ Ajout d'une fonctionnalité complète de création de Reels Facebook permettant
- [x] Afficher le menu de l'agent en français - [x] Afficher le menu de l'agent en français
- [x] Ré-activation de l'agent bmad-master.md (11 Fev 2026) - [x] Ré-activation de l'agent bmad-master.md (11 Fev 2026)
### Phase 20: Activation BMad Master Agent (Mars 2026) ⏳
- [x] Charger la configuration et le persona
- [x] Saluer l'utilisateur en français et afficher le menu
- [x] Attendre la sélection de l'utilisateur
- [x] Utilisateur a choisi `[CH]` : Discuter avec l'agent de n'importe quel sujet.
### Phase 21: Correction Synchronisation Texte/Audio Reel ⏳
- [x] Diagnostiquer : L'audio TTS a été décalé de 2s (`adelay=2s:all=1` dans FFmpeg), mais le timing des mots dans `.ass` n'a pas été ajusté proportionnellement.
- [x] Modifier `ffmpeg-service/main.py` pour passer le délai au générateur ASS.
- [x] Mettre à jour `generate_ass_from_word_boundaries` pour inclure le délai de 2s dans `start` et `end`.
- [x] Valider que les tags `Dialogue` dans le `.ass` commencent à `T+2.0s`.
## Progress Log ## Progress Log
- [x] Activation du mode Party et salutation de l'utilisateur. En attente du sujet de discussion. - [x] Activation du mode Party et salutation de l'utilisateur. En attente du sujet de discussion.