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
.
320
et240
?(a,234/787)