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