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.

Comentários

  • Além disso, se minha saída desejada fosse outra, este comando ainda funcionaria, apenas substituindo 320 e 240?
  • Sim. Além disso, atualize a fração da proporção, se ' for diferente.
  • Portanto, preciso sempre de proporções padrão, como 16: 9 ou 4: 3? Não consigo fazer resoluções aleatórias, como 322×239?
  • Claro. A proporção da imagem aqui é a da saída desejada. Portanto, se sua meta é 234×787, então ' s (a,234/787)
  • Explicado na resposta editada.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *