Uso questo filtro per ritagliare:
-filter_complex "[0:v]crop=w=320:h=240[v0c]
che funziona bene. Il problema è che a volte non so quale sia linput che riceverò. Ad esempio, potrebbe essere un 1000x500
o un 500x1000
. Quindi, quando ciò accade, ottiene solo una piccola area del centro del video. Lideale sarebbe ridimensionare linput per abbinare la più piccola delle sue dimensioni alloutput desiderato e ritagliare il resto. Il problema è che non so quale sarà la dimensione.
Come posso creare un filtro per risolvere questo problema?
Commenti
- Qual è la dimensione di output desiderata?
- 320×240, come nel comando che ho scritto
Risposta
Usa
[0:v]scale="if(gt(a,4/3),-1,320)":"if(gt(a,4/3),240,-1)",setsar=1,crop=320:240[v0c]
Le espressioni del filtro di scala per xey controllano le proporzioni dellinput e se sono maggiori di 4 : 3, imposta il valore sul secondo argomento e, in caso contrario, sul terzo argomento. -1
significa che le proporzioni originali devono essere preservate, ad es. scale=-1:400
applicato a 600x800
canvas risulterà in 300x400
.
320
e240
?(a,234/787)