Jeg bruger dette filter til at beskære:
-filter_complex "[0:v]crop=w=320:h=240[v0c]
som fungerer okay. Problemet er, at jeg nogle gange ikke ved, hvad det input er, som jeg får. Det kan f.eks. Være en 1000x500
eller en 500x1000
. Så når det sker, får det bare et lille område i midten af videoen. Det ideelle ville være at ændre størrelsen på input for at matche det mindste af dets dimensioner til min ønskede output og beskære resten. Problemet er, at jeg ikke ved, hvilken dimension der bliver.
Hvordan kunne jeg oprette et filter til at løse dette problem?
Kommentarer
- Hvad er den ønskede outputstørrelse?
- 320×240, som i kommandoen, jeg har skrevet
Svar
Brug
[0:v]scale="if(gt(a,4/3),-1,320)":"if(gt(a,4/3),240,-1)",setsar=1,crop=320:240[v0c]
Skalafilterets udtryk for x og y kontroller indgangssideforholdet og hvis det er større end 4 : 3, indstil værdien til 2. argument, og hvis ikke, til tredje argument. -1
betyder, at det oprindelige billedformat skal bevares f.eks. scale=-1:400
anvendt på et 600x800
lærred vil resultere i 300x400
.
320
og240
?(a,234/787)