Estou usando o ffmpeg para empilhar dois vídeos verticalmente. Eles podem ter tamanhos diferentes, então eu preciso escalá-los para o mesmo tamanho. Eu encontrei os seguintes comandos.
O primeiro funciona para tamanhos diferentes (mas não é dimensionado para o tamanho adequado):
ffmpeg -i input1 -i input2 -filter_complex '[0:v]pad=iw:ih*2[int];[int][1:v]overlay=0:H/2[vid]' -map [vid] -c:v libx264 -crf 23 -preset veryfast output
O segundo funciona se os vídeos tiverem a mesma largura e o mesmo formato de pixel:
ffmpeg -i input1 -i input2 -filter_complex vstack output
Como obter largura da primeira entrada dentro do argumento do filtro complexo para que a segunda entrada possa ser dimensionada para a mesma largura? Qual seria o comando para fazer isso? Eu preferiria o filtro vstack, já que deveria ser mais rápido que a combinação de pad e overlay.
para arquivos m4v, você deve obtê-los na segunda matriz:
3.a) escala com largura dada e manter a relação de aspecto
3.b) escala com largura dada, manter a relação de aspecto, mas tornar a altura divisível por 2 (exigido por muitos formatos de pixel):
fonte