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.

Commenti

  • Inoltre, se il mio output desiderato fosse un altro, questo comando funzionerebbe ancora, semplicemente sostituendo 320 e 240?
  • Sì. Inoltre, aggiorna la frazione delle proporzioni, se ' è diversa.
  • Quindi ho bisogno di proporzioni sempre standard, come 16: 9 o 4: 3? Non posso fare risoluzioni casuali, come 322×239?
  • Certo. Le proporzioni qui sono quelle delloutput desiderato. Quindi, se il tuo target è 234 x 787, allora ' s (a,234/787)
  • Spiegato nella risposta modificata.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *