PHP e FFMPEG - Realizando conversão inteligente de vídeo

Eu tenho uma tarefa estranhamente difícil de realizar. Eu pensei que seria fácil, mas todos os meus esforços foram infrutíferos.

Estou convertendo vídeos enviados para um script php de vários formatos (.avi, .mpg, .wmv, .mov, etc.) para um único formato .flv. A conversão está funcionando muito bem, mas estou tendo problemas com a resolução dos vídeos.

Este é o comando que estou executando atualmente (com PHP vars):

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

Tanto o $ original quanto o $ convertido contêm os caminhos completos para esses arquivos. Meu problema é que isso sempre se converte em 640x480 (como estou dizendo), mesmo quando a fonte é menor. Obviamente, isso é um desperdício de espaço em disco e largura de banda quando o vídeo é baixado. Além disso, isso não conta para vídeos de entrada em qualquer proporção diferente de 4: 3, resultando em uma conversão "esmagada" se eu fizer o upload de um vídeo 16: 9.

Existem 3 coisas que preciso fazer:

Determine a proporção do vídeo original.Se não for 4: 3, coloque a parte superior e a parte inferior com barras pretas.Converta para 640x480 se a dimensão do original for maior ou uma proporção de 4: 3 relativa à largura / altura do original (o que estiver mais próximo de 640x480).

Eu corriffmpeg -i em alguns vídeos, mas não vejo um formato ou local consistente para encontrar a resolução do original. Uma vez que eu consiga descobrir isso, eu sei que posso "fazer as contas" para descobrir o tamanho certo e especificar o preenchimento para corrigir a proporção com -padttop, -padbottom, etc.

questionAnswers(3)

yourAnswerToTheQuestion