Utilizo este filtro para hacer algunos recortes:

-filter_complex "[0:v]crop=w=320:h=240[v0c] 

que funciona bien. El problema es que, a veces, no sé cuál es la entrada que voy a recibir. Podría ser un 1000x500 o un 500x1000, por ejemplo. Entonces, cuando eso sucede, solo obtiene una pequeña área del centro del video. Lo ideal sería cambiar el tamaño de la entrada para que coincida con la menor de sus dimensiones con la salida deseada y recortar el resto. El problema es que no sé cuál será la dimensión.

¿Cómo podría construir un filtro para resolver este problema?

Comentarios

  • ¿Cuál es el tamaño de salida deseado?
  • 320×240, como en el comando que he escrito

Responder

Utilice

[0:v]scale="if(gt(a,4/3),-1,320)":"if(gt(a,4/3),240,-1)",setsar=1,crop=320:240[v0c] 

Las expresiones de filtro de escala para xey comprueba la relación de aspecto de la entrada y si es mayor que 4 : 3, establezca el valor en el segundo argumento y, en caso contrario, en el tercer argumento. El -1 significa que la relación de aspecto original debe conservarse, p. Ej. scale=-1:400 aplicado a un 600x800 lienzo dará como resultado 300x400.

Comentarios

  • Además, si mi resultado deseado fuera otro, este comando aún funcionaría, simplemente reemplazando 320 y 240?
  • Sí. Además, actualice la fracción de la relación de aspecto, si ' es diferente.
  • Entonces, ¿necesito siempre relaciones de aspecto estándar, como 16: 9 o 4: 3? ¿No puedo hacer resoluciones aleatorias, como 322×239?
  • Claro. La relación de aspecto aquí es la de su salida deseada. Por lo tanto, si su objetivo es 234×787, entonces ' s (a,234/787)
  • Explicado en la respuesta editada.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *