Comment puis-je recadrer une vidéo avec ffmpeg?

172

J'ai un fichier MP4 d'un enregistrement d'écran que je dois rogner. Comment puis-je accomplir cela sans utiliser des outils coûteux comme Adobe Premier ou Final Cut? Je préfère ffmpegparce que je l'ai déjà utilisé.

Stephenwade
la source

Réponses:

264

Utilisez le cropfiltre :

ffmpeg -i in.mp4 -filter:v "crop=out_w:out_h:x:y" out.mp4

Où les options sont les suivantes:

  • out_w est la largeur du rectangle de sortie
  • out_h est la hauteur du rectangle de sortie
  • xet yspécifiez le coin supérieur gauche du rectangle de sortie

Image originale

image originale
Image d'origine 320x240

Exemple 1

80x60

Pour recadrer une section de 80 × 60 à partir de la position (200, 100):

ffmpeg -i in.mp4 -filter:v "crop=80:60:200:100" -c:a copy out.mp4
  • L'audio est copié en flux dans cet exemple, ce qui évite le réencodage.

Exemple 2

quartier en bas à droite

Pour recadrer le quart inférieur droit:

ffmpeg -i in.mp4 -filter:v "crop=in_w/2:in_h/2:in_w/2:in_h/2" -c:a copy out.mp4

C'est pareil que:

ffmpeg -i in.mp4 -filter:v "crop=320/2:240/2:320/2:240/2" -c:a copy out.mp4

Quel est le même que:

ffmpeg -i in.mp4 -filter:v "crop=240:120:240:120" -c:a copy out.mp4
  • Vous pouvez faire référence à la taille d'image d'entrée avec in_wet in_hcomme indiqué dans ce premier exemple. La largeur et la hauteur de sortie peuvent également être utilisées avec out_wet out_h.

Exemple 3

20 pixels du haut et 20 du bas

Recadrer 20 pixels du haut et 20 du bas:

 ffmpeg -i in.mp4 -filter:v "crop=in_w:in_h-40" -c:a copy out.mp4
  • Le filtre centre automatiquement le recadrage si xet yest omis, comme dans cet exemple.

Prévisualisation

Vous pouvez prendre un recadrage (heh heh) et le prévisualiser en direct avec ffplay:

ffplay -i input -vf "crop=in_w:in_h-40"

De cette façon, vous pouvez expérimenter et ajuster votre recadrage sans avoir à encoder, voir, répéter.

Remarques

  • crop filtrer la documentation

  • Le codeur par défaut pour MP4 est libx264(vidéo H.264) ou mpeg4(vidéo MPEG-4 Partie 2) en fonction de votre ffmpegconstruction. Voir FFmpeg Wiki: Guide de codage vidéo H.264 pour plus d'informations.

  • Au lieu de recadrer et de ré-encoder, envisagez de recadrer lors de la lecture. Ceci est possible avec n'importe quel joueur utile.

  • Ancien ffmpegbuilds utilisé -croptop, -cropbottom, -cropleft, -croprightoptions au lieu du cropfiltre. Si tel est le cas pour vous alors obtenez un moderneffmpeg . Le développement est très actif et il n'y a aucune raison d'utiliser une antiquité.

Geppettvs D'Constanzo
la source
2
Cela fonctionne avec 'avconv' maintenant.
Joce
J'ai un 1923x1080 et veux 1920x1080. C’est la recommandation que j’ai essayée: /Users/kukodajanos/Workspace/ffmpeg -i /Users/kukodajanos/Desktop/video_640x480-2.mp4 -filter:v "crop=1920:1080:0:0" -c:a copy /Users/kukodajanos/Desktop/video_640x480-4.mp4mais le film original est renvoyé.
János
@Joce JFYI avconv fait partie de libav - une fourche de ffmpeg
andrybak
1
Il vaut la peine de mentionner cette technique (avec le cropfiltre) pour
recoder
1
édité pour changer le obsolète -filter:vau plus à jour et plus simple à taper -vf. À votre santé!
Elder Geek