Greg Gargiulo
M’écrire
Retour

Normaliseur vidéo.

Année : 2026

Des vidéos de toutes origines prêtes à monter, sans réglage manuel

Une vidéo verticale déjà exportée en 16:9, avec ses bandes noires : l’outil les retire et pose l’image sur un fond flou.

Fiche

Rôle
Conception et développement
Équipe
Seul, pour un usage personnel
Période
Octobre 2026
Statut
Terminé
Code
Privé
Captures
Images avant et après traitement, sur les mires de test de l’outil.

En bref

Un outil macOS que j’ai conçu et développé seul, pour mon propre usage : il prépare des vidéos de sources différentes avant leur montage dans CapCut. On glisse les fichiers sur l’application ; ils ressortent au même format, avec des couleurs et un volume homogènes, puis chacun est vérifié et le lancement laisse un rapport.

Point de départ

iPhone, Android, caméscope, captures d’écran : chaque source a son format, sa cadence, ses couleurs et son volume. Mélangées dans un montage, elles donnent des écrans noirs, des décalages de son et des sauts de volume.

Contraintes

  • Aucun réglage à faire par la personne qui monte : glisser les fichiers doit suffire.
  • Les originaux ne doivent jamais être modifiés.
  • Python et ffmpeg seulement, sans autre dépendance.
  • Des sources délicates : HDR, 10 bits, cadence variable, son 5.1, image entrelacée.

Livrables

  • Une application macOS : on y glisse des vidéos ou des dossiers, une fenêtre montre l’avancement.
  • Le traitement des vidéos et des photos, toutes ramenées au cadre 1920×1080.
  • Un contrôle automatique de chaque fichier produit.
  • Un rapport tableur par lancement : format d’origine, volume avant et après, remarques.
  • Un dossier d’erreurs, avec une explication pour chaque fichier refusé.
  • Une suite de tests sur des vidéos pièges générées.

Architecture

Un script Python pilote ffmpeg. ffprobe analyse chaque fichier, et le script en déduit les seuls filtres nécessaires : rotation, désentrelacement, conversion des couleurs, mise au cadre, cadence constante. Le volume est mesuré en une première passe, puis corrigé en une seconde.

Une application AppleScript sert de point d’entrée sur le Bureau, et une configuration JSON fixe les réglages de sortie. Relancer ne traite que les nouvelles vidéos : chaque fichier produit garde la trace de son original, si bien qu’une autre vidéo du même nom n’est pas sautée par erreur.

Stack technique

Langages
  • Python
  • AppleScript
Vidéo
  • ffmpeg
  • ffprobe
Tests
  • unittest

Décisions

  1. Un seul format en sortie

    Tout sort en MP4 H.264, en 1920×1080. Les vidéos verticales et carrées sont posées sur un fond flou plutôt qu’entre deux bandes noires, et les bandes déjà incrustées dans une vidéo sont retirées. Le fond flou, les bandes ou le recadrage se choisissent dans la configuration.

    Avant
    Après
    Une vidéo verticale d’iPhone, en HDR, dont l’orientation n’est donnée que par une métadonnée : redressée, convertie en SDR et posée sur un fond flou.
  2. Des couleurs et un volume homogènes d’un fichier à l’autre

    Le HDR de l’iPhone, que certains lecteurs affichent en écran noir, est converti en couleurs standard (SDR). Le son est ramené à −14 LUFS, avec des crêtes sous −1 dBTP, en stéréo 48 kHz ; une piste silencieuse est ajoutée aux vidéos qui n’en ont pas, pour que le montage reste calé.

  3. Une cadence constante pour garder le son calé

    Les téléphones filment souvent à cadence variable, ce qui décale le son dans un logiciel de montage. Chaque vidéo sort à 30 images par seconde constantes, et les tests vérifient la synchronisation sur des vidéos qui portent des repères visuels et sonores.

  4. Chaque fichier vérifié après coup

    Format, cadence, couleurs et son sont relus sur chaque fichier produit ; le volume final doit tomber à ±1 LU de la cible, et l’outil cherche les passages noirs de plus d’une seconde. Tout écart apparaît en avertissement dans le terminal et dans le rapport.

  5. Des tests sur des vidéos pièges

    La suite de tests génère les cas difficiles : vidéo d’iPhone HDR verticale, couleurs 4:4:4, cadence variable, vidéo sans son, son 5.1 saturé, mono très faible, caméscope entrelacé, ProRes, fichier corrompu. Elle les traite, puis vérifie le format, le volume, la synchronisation et l’intégrité des originaux.

Résultats

25
tests automatisés qui passent, avec 44 sous-tests
14
fichiers d’essai prêts à monter : 12 vidéos et 2 photos
2
fichiers volontairement corrompus, mis de côté avec leur explication
0,6×
temps de traitement d’une vidéo 1080p sur un Mac M1, rapporté à sa durée

Sur le même Mac, une vidéo d’iPhone en 4K HDR se traite en 1,4 fois sa durée.