Ezt a szűrőt használom néhány vágásra:

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

ami jól működik. A probléma az, hogy néha nem tudom, mi az a bemenet, amelyet kapni fogok. Lehet például egy 1000x500 vagy egy 500x1000. Tehát amikor ez megtörténik, akkor csak egy kis területet kap a videó közepétől. Az ideális az lenne, ha átméretezné a bemenetet, hogy méretének kisebbik megfeleljen a kívánt kimenetemnek, és a többit levágja. A probléma az, hogy nem tudom, melyik dimenzió lesz.

Hogyan építhetek szűrőt a probléma megoldására?

Megjegyzések

  • Mekkora a kívánt kimeneti méret?
  • 320×240, ahogyan az általam írt parancsban

Válasz

Használja

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

Az x és y skálaszűrő kifejezései ellenőrzik a bemenet képarányát, és ha nagyobbak, mint 4 : 3, állítsa az értéket a 2., és ha nem, a harmadik argumentumra. A -1 azt jelenti, hogy az eredeti képarányt meg kell őrizni pl. scale=-1:400 egy 600x800 vászonra alkalmazva 300x400.

Megjegyzések

  • Továbbá, ha a kívánt kimenetem másik lenne, működne ez a parancs továbbra is, csak a 320 és a 240?
  • Igen. Ha a ' eltér a ' képtől, akkor frissítse az oldalarányt is.
  • Szükségem van tehát mindig szabványos képarányokra, például 16: 9 vagy 4: 3? Nem tudok véletlenszerű felbontásokat hozni, például 322×239?
  • Persze. A képarány itt a kívánt kimenet. Tehát, ha a cél 234×787, akkor ' s (a,234/787)
  • a szerkesztett válaszban magyarázza.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük