Résumé
FFmpeg agrandit la résolution vidéo avec -vf "scale=1920:1080:flags=lanczos" — Lanczos est le meilleur algorithme de mise à l'échelle pour l'agrandissement. Pour le débruitage, hqdn3d réduit le grain tout en préservant les détails des contours. Pour la stabilisation, vidstab gère les tremblements de la caméra via un processus en deux passes. Combinez les trois dans une seule chaîne de filtres pour une pipeline d'amélioration de la qualité.
Introduction
L'amélioration de la qualité vidéo avec FFmpeg va au-delà du simple changement de résolution. Une véritable amélioration combine l'agrandissement de la résolution avec un débruitage intelligent et une stabilisation optionnelle. Chaque étape cible un problème de qualité différent : des séquences floues ou pixélisées, des images granuleuses ou bruyantes, et des mouvements de caméra tremblants.
Ce guide couvre chaque technique indépendamment et montre comment les combiner.
Algorithmes de mise à l'échelle
L'algorithme de mise à l'échelle détermine comment FFmpeg remplit les nouveaux pixels lors de l'agrandissement. Le choix a un effet visible sur la qualité de la sortie.
| Algorithme | Vitesse | Qualité | Idéal pour |
|---|---|---|---|
neighbor |
Le plus rapide | La plus faible | Pixel art |
bilinear |
Rapide | Faible | Critique pour la vitesse |
bicubic |
Moyenne | Bonne | Réduction d'échelle générale |
lanczos |
Plus lent | La meilleure | Agrandissement |
Agrandir à 1080p avec Lanczos :
ffmpeg -i input_720p.mp4 -vf "scale=1920:1080:flags=lanczos" -c:v libx264 -crf 20 output_1080p.mp4
Maintenir le rapport d'aspect :
ffmpeg -i input.mp4 -vf "scale=1920:-2:flags=lanczos" -c:v libx264 -crf 20 output.mp4
-2 calcule automatiquement la hauteur tout en maintenant le rapport d'aspect et en s'assurant que le résultat est divisible par 2.
Mettre à l'échelle en 4K :
ffmpeg -i input.mp4 -vf "scale=3840:-2:flags=lanczos" -c:v libx264 -crf 18 -preset slow output_4k.mp4
-preset slow indique à x264 de passer plus de temps à optimiser la compression, ce qui est plus important aux résolutions plus élevées.
Débruitage avec hqdn3d
Le filtre hqdn3d est un débruitage 3D de haute qualité. Il supprime le grain et le bruit tout en préservant les détails des contours.
ffmpeg -i noisy_video.mp4 -vf "hqdn3d=4:3:6:4.5" -c:v libx264 -crf 20 denoised.mp4
Les quatre paramètres : luma_spatial:chroma_spatial:luma_temporal:chroma_temporal
luma_spatial(0-16) : Bruit spatial dans le canal de luminosité. Défaut 4.chroma_spatial(0-16) : Bruit spatial dans les canaux de couleur. Défaut 3.luma_temporal(0-16) : Lissage temporel de la luminosité. Défaut 6.chroma_temporal(0-16) : Lissage temporel de la couleur. Défaut 4.5.
Débruitage plus fort :
ffmpeg -i grainy.mp4 -vf "hqdn3d=10:8:15:10" -c:v libx264 -crf 20 clean.mp4
Des valeurs plus élevées suppriment plus de bruit mais peuvent flouter les détails fins. Testez avec différents réglages avant de traiter la vidéo complète.
Débruitage léger (préserve les détails) :
ffmpeg -i video.mp4 -vf "hqdn3d=2:1.5:3:2.5" -c:v libx264 -crf 20 output.mp4
Stabilisation avec vidstab
Le filtre vidstab nécessite une approche en deux passes : d'abord analyser le mouvement, puis appliquer la stabilisation.
Installation : Le support de vidstab dépend de votre version de FFmpeg. Vérifiez avec ffmpeg -filters | grep vidstab. Sur macOS : brew install ffmpeg l'inclut.
Passe 1 : Analyser le mouvement
ffmpeg -i shaky_video.mp4 -vf "vidstabdetect=stepsize=6:shakiness=8:accuracy=9:result=transform.trf" -f null -
shakiness=8 (1-10) : Degré de tremblement de la caméra à anticiper. accuracy=9 (1-15) : Précision de la détection. Le -f null - ignore la sortie ; nous n'avons besoin que du fichier .trf.
Passe 2 : Appliquer la stabilisation
ffmpeg -i shaky_video.mp4 -vf "vidstabtransform=input=transform.trf:zoom=1:smoothing=10" -c:v libx264 -crf 20 stabilized.mp4
zoom=1 ajoute un zoom de 1% pour compenser le rognage des bords causé par la stabilisation. Augmentez si des bordures noires apparaissent. smoothing=10 contrôle la fluidité du mouvement de la caméra (plus élevé = plus fluide).
Stabilisation plus agressive :
ffmpeg -i video.mp4 -vf "vidstabtransform=input=transform.trf:zoom=3:smoothing=30:optzoom=1" -c:v libx264 -crf 20 stable.mp4
optzoom=1 optimise automatiquement le zoom pour éviter les bordures.
Pipeline d'amélioration de la qualité combinée
Exécutez les trois opérations ensemble dans une seule chaîne de filtres :
ffmpeg -i source.mp4 \
-vf "hqdn3d=4:3:6:4.5,scale=1920:-2:flags=lanczos,vidstabtransform=input=transform.trf:zoom=1:smoothing=10" \
-c:v libx264 -crf 18 -preset slow \
-c:a copy \
enhanced.mp4
Appliquez cet ordre : débruitage d'abord (supprime les artefacts qui pourraient affecter la mise à l'échelle), puis mise à l'échelle, puis stabilisation. Cela évite de mettre à l'échelle le bruit vers une résolution plus élevée.
Remarque : Exécutez d'abord la passe vidstabdetect avant d'utiliser cette pipeline combinée.
Filtre d'accentuation
Si les séquences semblent floues plutôt que bruyantes, l'accentuation peut aider :
ffmpeg -i video.mp4 -vf "unsharp=5:5:1.5:5:5:0.5" -c:v libx264 -crf 20 sharpened.mp4
Paramètres : lx:ly:la:cx:cy:ca (tailles et quantités luma/chroma)lx:ly — taille de la matrice luma (pixels)la — quantité luma (positif = accentuer, négatif = flouter)cx:cy:ca — équivalents chroma
Pour une accentuation légère : unsharp=3:3:0.5:3:3:0.0
Pour une accentuation forte : unsharp=5:5:2.5:5:5:0.0
Considérations sur les performances
Les opérations d'amélioration sont gourmandes en calcul. Estimations du temps de traitement pour une vidéo 1080p de 10 minutes :
- Mise à l'échelle simple uniquement : 2-5 minutes
- Mise à l'échelle + hqdn3d : 5-10 minutes
- Mise à l'échelle + hqdn3d + vidstab : 15-25 minutes
Utilisez -preset pour équilibrer la vitesse d'encodage et la taille du fichier :
ultrafast— encodage le plus rapide, fichiers plus volumineuxfast— vitesse/taille modéréeslow— le plus lent, fichiers les plus petits pour un CRF donnéveryslow— ne vaut généralement pas le temps supplémentaire par rapport àslow
Pour le traitement par lots, exécutez plusieurs fichiers simultanément ou utilisez parallel :
ls *.mp4 | parallel ffmpeg -i {} -vf "scale=1920:-2:flags=lanczos" -c:v libx264 -crf 20 enhanced_{/}
Connexion aux API d'agrandissement vidéo par IA
Pour l'agrandissement basé sur l'IA (qui produit de meilleurs résultats que les filtres de FFmpeg pour les séquences de basse qualité ou endommagées), des API spécialisées existent à côté des outils de FFmpeg.
WaveSpeedAI propose des modèles d'agrandissement par IA qui utilisent l'agrandissement neuronal plutôt que des filtres algorithmiques :
POST https://api.wavespeed.ai/api/v2/wavespeed-ai/video-enhance
Authorization: Bearer {{WAVESPEED_API_KEY}}
Content-Type: application/json
{
"video_url": "https://storage.example.com/source-video.mp4",
"scale": 2,
"enhance": true
}
Testez ceci avec Apidog avant l'intégration :
Ajoutez des assertions :
Le code de statut est 200
Le corps de la réponse contient le champ id
Interrogez le point de terminaison de statut pour la complétion, puis comparez la sortie agrandie par IA avec la sortie Lanczos de FFmpeg. L'agrandissement par IA gère mieux les textures et les détails fins que les méthodes algorithmiques ; FFmpeg est plus rapide et gratuit.
Utilisez FFmpeg pour les travaux de qualité standard et l'agrandissement par IA basé sur API pour les séquences où la qualité est primordiale.
FAQ
Lanczos est-il meilleur que bicubic dans tous les cas ?
Pour l'agrandissement, oui. Pour la réduction d'échelle, bicubic est souvent plus rapide avec une qualité comparable. Lanczos est plus coûteux en calcul.
vidstab fonctionne-t-il sur les séquences de téléphone ?
Oui. Les séquences de téléphone bénéficient souvent le plus de la stabilisation. Le paramètre shakiness doit être réglé sur une valeur élevée (8-10) pour les vidéos de téléphone filmées à la main.
Quel niveau de zoom est nécessaire pour masquer les bordures de stabilisation ?
Généralement 3-8% selon le degré de tremblement de la source. Définissez optzoom=1 pour que FFmpeg le calcule automatiquement.
FFmpeg peut-il améliorer les séquences historiques basse résolution ?
Les filtres de FFmpeg aident mais ont des limites. Les outils d'agrandissement basés sur l'IA (comme ESRGAN ou les API spécialisées d'amélioration vidéo) produisent des résultats significativement meilleurs sur les séquences fortement dégradées.
Le débruitage ralentit-il la lecture ?
Non. Le débruitage est une étape de traitement pendant la conversion, pas un effet en temps réel. La vidéo de sortie est lue normalement.
