Eu tenho um monte de clipes que estou tentando combinar em um vídeo. O problema é que cada clipe tem uma resolução e proporção diferentes (por vezes, SAR e DAR diferentes também). Estou tentando fazer com que tudo seja 1920x1080 16:9 (mesmo SAR e DAR) com um fundo preto preenchendo o espaço extra. Aqui está o que eu tenho atualmente:
ffmpeg -i input.mp4 -vf "scale=(iw*sar)*max(1920/(iw*sar)\,1080/ih):ih*max(1920/(iw*sar)\,1080/ih), crop=1920:1080,setsar=1:1" -c:v mpeg4 -vtag XVID -q:v 4 -c:a libmp3lame -q:a 4 output.avi
Isso deixa tudo em 1920x1080, mas corta vídeos que não são 16:9. Gostaria que os vídeos não 16:9 tivessem barras pretas estendidas.
Aqui está o que estou usando para combinar todos os clipes depois que eles foram redimensionados.
ffmpeg -i input1.avi -i input2.avi ... input14.avi -filter_complex "[0:v] [0:a] [1:v] [1:a] [2:v] [2:a] ... [14:v] [14:a] concat=n=15:v=1:a=1 [v] [a]" -map "[v]" -map "[a]" output.mkv
Em sua forma atual, ele se junta aos vídeos sem problemas. No passado, esse script teve problemas quando o primeiro converteu vídeos verticais "corretamente". Normalmente, ele reclamaria sobre o SAR e/ou o DAR estarem errados.
Concluindo, como posso modificar o primeiro comando para dimensionar corretamente qualquer/todas as resoluções/proporções de aspecto para 1920x1080 16:9 com o mesmo SAR e DAR? Então (se necessário) como eu modificaria o segundo script para combinar os vídeos convertidos?
O filtro de escala tem algumas opções sob medida para redimensionamento proporcional. Use o filtro pad depois para adicionar barras pretas.
ffmpeg -i input.mp4 -vf "scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:-1:-1,setsar=1" -c:v mpeg4 -vtag XVID -q:v 4 -c:a libmp3lame -q:a 4 output.avi
(Eu sugiro saída para MP4/MOV para esses arquivos intermediários, usando seus codecs padrão. MPEG-4 Parte 2 em AVI está desatualizado.)