Agent OS
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 :

  1. Pre-traitement : extraire l'audio, normaliser, recadrer
  2. 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.mp4

Pourquoi : 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.mp4

Le 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.wav

Decoupe 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 :

  1. Detecter les silences
  2. Extraire les segments non-silencieux
  3. 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.mp4

Ajout 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.mp4

Concatenation 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.mp4

FFmpeg vs VectCutAPI

CritereFFmpegVectCutAPI
ExecutionLocal, CLIAPI distante
VitesseRapide (hardware local)Depend du reseau
FlexibiliteTotaleLimitee aux endpoints
Decoupe intelligenteManuelle (timestamps)Automatique (IA)
CoutGratuitPayant par minute
UsagePre/post-traitementDecoupe contenu intelligente

Regle :

  • Operations mecaniques (crop, normalize, encode) → FFmpeg
  • Operations intelligentes (trouver les moments forts, couper les passages ennuyeux) → VectCutAPI

Formats cibles par plateforme

PlateformeResolutionRatioCodecBitrate
TikTok1080x19209:16H.2645-8 Mbps
Instagram Reels1080x19209:16H.2645-8 Mbps
YouTube Shorts1080x19209:16H.2645-8 Mbps
YouTube1920x108016:9H.26410-15 Mbps
Twitter/X1280x72016:9H.2645 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.mp4

Limites

  • 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.

On this page