Jutilise ce filtre pour faire du recadrage:

-filter_complex "[0:v]crop=w=320:h=240[v0c] 

qui fonctionne bien. Le problème est que parfois, je ne sais pas quelle est la contribution que je vais obtenir. Il peut sagir dun 1000x500 ou dun 500x1000, par exemple. Ainsi, lorsque cela se produit, il ne sagit que dune petite zone au centre de la vidéo. Lidéal serait de redimensionner lentrée pour quelle corresponde à la plus petite de ses dimensions à la sortie souhaitée et de recadrer le reste. Le problème est que je ne sais pas quelle dimension va être.

Comment puis-je créer un filtre pour résoudre ce problème?

Commentaires

  • Quelle est la taille de sortie souhaitée?
  • 320×240, comme dans la commande que jai écrite

Réponse

Utilisez

[0:v]scale="if(gt(a,4/3),-1,320)":"if(gt(a,4/3),240,-1)",setsar=1,crop=320:240[v0c] 

Les expressions de filtre déchelle pour x et y vérifient le rapport hauteur / largeur de lentrée et sil est supérieur à 4 : 3, définissez la valeur sur le 2ème argument, et sinon, sur le troisième argument. Le -1 signifie que le rapport hauteur / largeur dorigine doit être conservé, par ex. scale=-1:400 appliqué à un 600x800 canevas se traduira par 300x400.

Commentaires

  • De plus, si ma sortie souhaitée était une autre, cette commande fonctionnerait-elle encore, en remplaçant simplement 320 et 240?
  • Oui. Mettez également à jour la fraction de rapport hauteur / largeur, si ce ' est différent.
  • Ai-je donc toujours besoin de rapports hauteur / largeur standard, comme 16: 9 ou 4: 3? Je ne peux pas faire de résolutions aléatoires, comme 322×239?
  • Bien sûr. Le rapport hauteur / largeur ici est celui de votre sortie souhaitée. Donc, si votre cible est de 234 x 787, alors elle ' est (a,234/787)
  • Expliquée dans la réponse modifiée.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *