Ik gebruik dit filter om wat bij te snijden:
-filter_complex "[0:v]crop=w=320:h=240[v0c]
wat goed werkt. Het probleem is dat ik soms niet weet wat de input is die ik ga krijgen. Het kan bijvoorbeeld een 1000x500
of een 500x1000
zijn. Dus als dat gebeurt, krijgt het slechts een klein deel van het midden van de video. Het ideaal zou zijn om het formaat van de invoer aan te passen aan de kleinste van zijn afmetingen aan de door mij gewenste uitvoer, en de rest bij te snijden. Het probleem is dat ik niet weet welke dimensie zal zijn.
Hoe kan ik een filter bouwen om dit probleem op te lossen?
Opmerkingen
- Wat is de gewenste uitvoergrootte?
- 320×240, zoals in het commando dat ik heb geschreven
Antwoord
Gebruik
[0:v]scale="if(gt(a,4/3),-1,320)":"if(gt(a,4/3),240,-1)",setsar=1,crop=320:240[v0c]
De schaalfilteruitdrukkingen voor x en y controleren de aspectverhouding van de invoer en indien groter dan 4 : 3, stel de waarde in op het 2e argument en zo niet op het derde argument. De -1
betekent dat de oorspronkelijke beeldverhouding behouden moet blijven, bijvoorbeeld scale=-1:400
toegepast op een 600x800
canvas zal resulteren in 300x400
.
320
en240
?(a,234/787)