Tools
FFmpeg
Traitement video CLI. Normalisation audio, recadrage 9:16, decoupe silence, et quand utiliser FFmpeg vs VectCutAPI.
FFmpeg
FFmpeg est l'outil CLI de traitement video et audio. Il fait le travail bas niveau : couper, recadrer, normaliser, encoder.
Role dans le pipeline
Video brute
|
FFmpeg (pre-traitement)
|
+-------------------+
| |
Whisper (audio) Agent Video
| |
Sous-titres Montage final
| |
+------- FFmpeg ----+
(export final)FFmpeg intervient deux fois :
- Pre-traitement : extraire l'audio, normaliser, recadrer
- Export final : encoder la video montee au format cible
Commandes utilisees
Normalisation audio
# Normaliser le volume (loudnorm EBU R128)
ffmpeg -i input.mp4 -af loudnorm=I=-16:TP=-1.5:LRA=11 -c:v copy output.mp4Pourquoi : les videos brutes ont des niveaux audio inconsistants.
Le standard EBU R128 (-16 LUFS) est le standard des plateformes.
Recadrage 9:16 (vertical pour Reels/TikTok)
# Recadrer du 16:9 vers 9:16 (centre)
ffmpeg -i input.mp4 -vf "crop=ih*9/16:ih" output_vertical.mp4
# Recadrer avec suivi du sujet (position manuelle)
ffmpeg -i input.mp4 -vf "crop=ih*9/16:ih:x=500" output_vertical.mp4Le recadrage centre par defaut. Pour suivre un sujet, specifier la position X.
Extraction audio pour Whisper
# Audio WAV 16kHz mono (optimal pour Whisper)
ffmpeg -i video.mp4 -vn -acodec pcm_s16le -ar 16000 -ac 1 audio.wavDecoupe des silences
# Detecter les silences
ffmpeg -i input.mp4 -af silencedetect=noise=-30dB:d=1.5 -f null - 2>&1
# Supprimer les silences (via script)
# Le silencedetect donne les timestamps.
# Un script les utilise pour couper et concatener les segments non-silencieux.La detection donne les timestamps. La suppression se fait via un script qui enchaine :
- Detecter les silences
- Extraire les segments non-silencieux
- Concatener les segments
Decoupe par timestamp
# Couper de 00:01:30 a 00:03:45
ffmpeg -i input.mp4 -ss 00:01:30 -to 00:03:45 -c copy segment.mp4
# Couper les 10 premieres secondes
ffmpeg -i input.mp4 -ss 10 -c copy trimmed.mp4Ajout de sous-titres
# Sous-titres en dur (burn-in)
ffmpeg -i input.mp4 -vf "subtitles=subs.srt:force_style='FontSize=24'" output.mp4
# Sous-titres soft (piste separee)
ffmpeg -i input.mp4 -i subs.srt -c copy -c:s mov_text output.mp4Concatenation de segments
# Fichier list.txt :
# file 'segment1.mp4'
# file 'segment2.mp4'
# file 'segment3.mp4'
ffmpeg -f concat -safe 0 -i list.txt -c copy output.mp4FFmpeg vs VectCutAPI
| Critere | FFmpeg | VectCutAPI |
|---|---|---|
| Execution | Local, CLI | API distante |
| Vitesse | Rapide (hardware local) | Depend du reseau |
| Flexibilite | Totale | Limitee aux endpoints |
| Decoupe intelligente | Manuelle (timestamps) | Automatique (IA) |
| Cout | Gratuit | Payant par minute |
| Usage | Pre/post-traitement | Decoupe contenu intelligente |
Regle :
- Operations mecaniques (crop, normalize, encode) → FFmpeg
- Operations intelligentes (trouver les moments forts, couper les passages ennuyeux) → VectCutAPI
Formats cibles par plateforme
| Plateforme | Resolution | Ratio | Codec | Bitrate |
|---|---|---|---|---|
| TikTok | 1080x1920 | 9:16 | H.264 | 5-8 Mbps |
| Instagram Reels | 1080x1920 | 9:16 | H.264 | 5-8 Mbps |
| YouTube Shorts | 1080x1920 | 9:16 | H.264 | 5-8 Mbps |
| YouTube | 1920x1080 | 16:9 | H.264 | 10-15 Mbps |
| Twitter/X | 1280x720 | 16:9 | H.264 | 5 Mbps |
# Encoder pour TikTok/Reels
ffmpeg -i input.mp4 \
-vf "scale=1080:1920:force_original_aspect_ratio=decrease,pad=1080:1920:(ow-iw)/2:(oh-ih)/2" \
-c:v libx264 -b:v 6M -c:a aac -b:a 128k \
output_tiktok.mp4Limites
- Pas d'intelligence. FFmpeg ne sait pas ce qui est "interessant" dans une video.
- La syntaxe est complexe. Toujours documenter les commandes utilisees.
- Le traitement GPU (NVENC) necessite un GPU compatible.
- Les filtres complexes peuvent etre lents sur CPU.