Convertir une vidéo en une taille d'écran fixe en recadrant et en redimensionnant

14

J'ai essayé de comprendre cela moi-même, mais la myriade d'options me déconcerte.

Je veux utiliser idéalement soit ffmpegou mencoder(ou autre chose, mais ces deux-là, je sais que je travaille) pour convertir toute vidéo entrante en une taille d'écran fixe.

Si la vidéo est plus large ou trop courte, recadrez la vidéo au centre. Si ce n'est pas la bonne taille, redimensionnez vers le haut ou vers le bas pour en faire exactement la taille d'écran fixe.

La dernière chose dont j'ai besoin est de 720x480 dans un XVid AVI avec une piste audio MP3.

J'ai trouvé beaucoup de pages montrant comment redimensionner à une résolution maximale, mais j'ai besoin que la vidéo soit exactement cette résolution (avec des parties supplémentaires coupées, pas de barres noires).

Quelqu'un peut-il me dire la ligne de commande à exécuter - ou au moins me faire une partie ou presque du chemin? S'il doit s'agir de plusieurs lignes de commande (exécutez X pour obtenir la résolution, faites ce calcul, puis exécutez Y avec la sortie de ce calcul), je peux l'écrire.

Andy Jeffries
la source

Réponses:

22

Quelque chose comme ça devrait fonctionner avec les paramètres appropriés pour chaque cas:

Remarque: La réponse d'origine a été publiée dans ce lien: Comment puis-je recadrer une vidéo avec ffmpeg? qui a été publié à l'origine par moi et modifié plusieurs fois afin de le mettre à jour avec les options les plus récentes dans les versions les plus récentes de ffmpeg. Un grand merci à slhck , Jonathan. , Anton Rudeshko , LordNeckbeard et futurs responsables.


Dans les versions récentes de FFmpeg, 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 originale 320x240

Exemple 1

80x60

Pour recadrer une section 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, donc le ré-encodage est évité.

Exemple 2

quart inférieur droit

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 la même chose que:

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

C'est la même chose que:

ffmpeg -i in.mp4 -filter:v "crop=240:120:240:120" -c:a copy out.mp4
  • Vous pouvez vous référer à la taille de l'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

Recadrez à 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 centrera automatiquement le recadrage si xet ysont omis comme dans cet exemple.

Aperçu

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 à coder, visualiser, répéter.

Remarques

  • crop documentation du filtre

  • L'encodeur par défaut pour MP4 est libx264(vidéo H.264) ou mpeg4(vidéo MPEG-4 partie 2) selon votre ffmpegversion. Voir Wiki FFmpeg: Guide d'encodage vidéo H.264 pour plus d'informations.

  • Au lieu de recadrer et de ré-encoder, pensez à recadrer lors de la lecture. C'est possible avec n'importe quel joueur qui en vaut la peine.

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

Geppettvs D'Constanzo
la source
Des points supplémentaires pour Previewing avec ffplayqui rend l' utilisation ffmpegde rogner la taille de l' écran vidéo réalisable dans la pratique.
SpeedCoder5