Jeg bruker dette filteret til å beskjære:

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

som fungerer bra. Problemet er at jeg noen ganger ikke vet hva som er innspillet jeg skal få. Det kan for eksempel være et 1000x500 eller en 500x1000. Så når det skjer, blir det bare et lite område i midten av videoen. Det ideelle ville være å endre størrelsen på inngangen for å matche den minste dimensjonen til ønsket utgang, og beskjære resten. Problemet er at jeg ikke vet hvilken dimensjon som kommer til å bli.

Hvordan kunne jeg lage et filter for å løse dette problemet?

Kommentarer

  • Hva er ønsket utskriftsstørrelse?
  • 320×240, som i kommandoen jeg har skrevet

Svar

Bruk

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

Skalafilteruttrykk for x og y sjekk størrelsesforholdet til inngangen og hvis større enn 4 : 3, sett verdien til det andre argumentet, og hvis ikke, til det tredje argumentet. -1 betyr at det opprinnelige sideforholdet skal bevares f.eks. scale=-1:400 brukt på et 600x800 lerret vil resultere i 300x400.

Kommentarer

  • Hvis min ønskede utgang var en annen, ville denne kommandoen fortsatt fungere, bare erstatte 320 og 240?
  • Ja. Oppdater også størrelsesforholdet, hvis den ' er forskjellig.
  • Så trenger jeg alltid standard bildeforhold, som 16: 9 eller 4: 3? Kan jeg ikke ta tilfeldige oppløsninger, som 322×239?
  • Jada. Skjermformatet her er det du ønsker å ha. Så hvis målet ditt er 234×787, så ' s (a,234/787)
  • Forklart i redigert svar.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *