Eu uso este filtro para fazer alguns cortes:
-filter_complex "[0:v]crop=w=320:h=240[v0c]
que funciona bem. O problema é que às vezes não sei qual é o input que vou obter. Pode ser um 1000x500
ou um 500x1000
, por exemplo. Então, quando isso acontece, apenas obtém uma pequena área do centro do vídeo. O ideal seria redimensionar a entrada para combinar a menor de suas dimensões com a saída desejada e cortar o restante. O problema é que não sei qual dimensão será.
Como poderia construir um filtro para resolver este problema?
Comentários
- Qual é o tamanho de saída desejado?
- 320×240, como no comando que escrevi
Resposta
Use
[0:v]scale="if(gt(a,4/3),-1,320)":"if(gt(a,4/3),240,-1)",setsar=1,crop=320:240[v0c]
As expressões de filtro de escala para xey verificam a proporção da entrada e se for maior que 4 : 3, defina o valor para o segundo argumento, e se não, para o terceiro argumento. O -1
significa que a proporção original deve ser preservada. scale=-1:400
aplicado a uma tela 600x800
resultará em 300x400
.
320
e240
?(a,234/787)