Tento filtr používám k oříznutí:

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

který funguje dobře. Problém je v tom, že někdy nevím, jaký je vstup, který dostanu. Může to být například 1000x500 nebo 500x1000. Když k tomu dojde, dostane jen malou oblast do středu videa. Ideální by bylo změnit velikost vstupu tak, aby odpovídala menším z jeho rozměrů mému požadovanému výstupu, a zbytek oříznout. Problém je v tom, že nevím, která dimenze bude.

Jak mohu vytvořit filtr, který by tento problém vyřešil?

Komentáře

  • Jaká je požadovaná velikost výstupu?
  • 320×240, jako v příkazu, který jsem napsal

Odpovědět

Použít

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

Výrazy filtru měřítka pro x a y zkontrolují poměr stran vstupu a pokud je větší než 4 : 3, nastavte hodnotu na 2. argument, a pokud ne, na třetí argument. -1 znamená, že by měl být zachován původní poměr stran, např. scale=-1:400 použitý na 600x800 plátně bude mít za následek 300x400.

Komentáře

  • Pokud by můj požadovaný výstup byl jiný, fungoval by tento příkaz stále, kdyby nahradil 320 a 240?
  • Ano. Aktualizujte také zlomek poměru stran, pokud se ' liší.
  • Potřebuji tedy vždy standardní poměry stran, například 16: 9 nebo 4: 3? Cant I make random resolutions, like 322×239?
  • Jistě. Zde je poměr stran požadovaného výstupu. Pokud je tedy váš cíl 234×787, pak je ' s (a,234/787)
  • vysvětleno v upravené odpovědi.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *