Jag använder det här filtret för att beskära:
-filter_complex "[0:v]crop=w=320:h=240[v0c]
som fungerar okej. Problemet är att jag ibland inte vet vilken input jag kommer att få. Det kan till exempel vara 1000x500
eller 500x1000
. Så när det händer blir det bara ett litet område i mitten av videon. Idealet skulle vara att ändra storlek på ingången för att matcha den mindre av dess dimensioner till min önskade effekt och beskära resten. Problemet är att jag inte vet vilken dimension som kommer att bli.
Hur kunde jag skapa ett filter för att lösa detta problem?
Kommentarer
- Vad är önskad utmatningsstorlek?
- 320×240, som i kommandot jag har skrivit
Svar
Använd
[0:v]scale="if(gt(a,4/3),-1,320)":"if(gt(a,4/3),240,-1)",setsar=1,crop=320:240[v0c]
Skalans filteruttryck för x och y kontrollera ingångens bildförhållande och om det är större än 4 : 3, ställ in värdet till det andra argumentet, och om inte, till det tredje argumentet. -1
betyder att det ursprungliga bildförhållandet bör bevaras t.ex. scale=-1:400
tillämpas på en 600x800
duk resulterar i 300x400
.
320
och240
?(a,234/787)