PHP y FFMPEG - Realizar conversión de video inteligente

Tengo una tarea extrañamente difícil de realizar. Pensé que sería fácil, pero todos mis esfuerzos han sido infructuosos.

Estoy convirtiendo los videos subidos a un script php desde varios formatos (.avi, .mpg, .wmv, .mov, etc.) a un único formato .flv. La conversión está funcionando muy bien, pero con lo que estoy teniendo problemas es con la resolución de los videos.

Este es el comando que estoy ejecutando actualmente (con vars PHP):

ffmpeg -i $original -ab 96k -b 700k -ar 44100 -s 640x480 -acodec mp3 $converted

Tanto $ original como $ convertido contienen las rutas completas a esos archivos. Mi problema es que esto siempre se convierte a 640x480 (como le digo) incluso cuando la fuente es más pequeña. Obviamente, esto es un desperdicio de espacio en disco y ancho de banda cuando se descarga el video. Además, esto no tiene en cuenta que los videos de entrada tienen una relación de aspecto diferente a 4: 3, lo que resulta en una conversión "aplastada" si subo un video de 16: 9.

Hay 3 cosas que necesito hacer:

Determine la relación de aspecto del video original.Si no es 4: 3, rellene la parte superior e inferior con barras negras.Convierta a 640x480 si alguna dimensión del original es mayor o una relación de aspecto 4: 3 relacionada con el ancho / alto del original (el que esté más cerca de 640x480).

He corridoffmpeg -i en algunos videos, pero no veo un formato o ubicación coherente para encontrar la resolución original. Una vez que sea capaz de averiguarlo, sé que puedo "hacer los cálculos" para averiguar el tamaño correcto y especificar el relleno para corregir la relación de aspecto con -padttop, -padbottom, etc.

Respuestas a la pregunta(3)

Su respuesta a la pregunta