mirror of
https://github.com/R0m1k3/Socialflow.git
synced 2026-10-11 17:26:45 +02:00
feat: Introduce ffmpeg-service using FastAPI to process video, generate TTS with synchronized subtitles, and manage fonts.
This commit is contained in:
1 parent
101e27a2fd
commit
c3356c2140
3 files changed
+22
-4
No files matched your search
Binary file not shown.
@@ -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}'"
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
Reference in new issue
Block a user