ffmpeg: Comment créer des vignettes recadrées?

10

Pour créer une miniature de vidéo avec ffmpegJ'utilise cette commande:

ffmpeg -itsoffset -4 -i video.mp4 -vframes 1 thumb.jpg

Cela me donne une vignette avec la même taille de la vidéo (qui a une taille inconnue, par exemple 960x540). Mais ce dont j'ai besoin, c'est d'une vignette carrée ( recadrée ) avec une taille donnée (par exemple 200x200). Le résultat ne doit pas être redimensionné, mais recadré à partir du centre, et le rapport hauteur / largeur ne doit pas changer.

Comment cela peut-il être accompli?

Georg Ledermann
la source
Pourquoi utiliser -itsoffsetau lieu de -ss? J'ai vu une utilisation accrue de ces derniers temps par les utilisateurs qui produisent des images à partir de vidéos.
llogan
@LordNeckbeard: Désolé, mélangé les options. Trouvé cela pour plus d'informations sur -itsoffsetvs -ss: superuser.com/questions/538031/…
Georg Ledermann

Réponses:

12

Vous pouvez utiliser le cropfiltre vidéo:

ffmpeg -ss 4 -i video.mp4 -vf crop=200:200 -vframes 1 output.jpg
  • Par défaut, le recadrage sera centré.

  • Utilisez -ssau lieu de -itsoffsetpour choisir votre décalage horaire.

  • Vous pouvez contrôler la qualité de sortie JPEG avec -qscale:v. L'utilisation d'une valeur de 2 à 5 est généralement bonne; une valeur inférieure est une qualité supérieure.

  • Le cropfiltre peut également accepter l'entrée et la sortie largeur et la hauteur en tant que valeurs: iw, ih, ow, oh. Cela permet un filtrage plus souple et créative: crop=iw-100:ih-50.

Vous pouvez tester avec ffplaypour obtenir un aperçu:

ffplay video.mp4 -vf crop=200:200

Image originale (générée avec le testsrcfiltre source:

ffmpeg -f lavfi -i testsrc -vframes 1 output.jpg 

image originale

Image recadrée:
image recadrée

llogan
la source
6

Vous pouvez d'abord le mettre à l'échelle puis le recadrer pour une meilleure sortie;)

ffmpeg -ss 10 -i "Ali_Video.mp4" -vframes 1 -filter "scale=-1:300,crop=400:300" "output.jpg"

vidéo d'entrée à 0:49 image de sortie

ffmpeg -ss 10 -i "Ali_Video.mp4" -vframes 1 -filter "scale=-1:150,crop=200:150" "output.jpg"

une autre vignette

SMMousavi
la source