FFMPEG: Sobreponha o vídeo dimensionado sobre a imagem

1

Eu estou tentando produzir vídeo contendo imagem estática e vídeo menor que seria sobreposto em cima dele. As dimensões e a posição do vídeo de sobreposição são enviadas dinamicamente ao script do servidor que executa o FFMPEG, portanto, preciso escalar o vídeo antes de sobrepô-lo. Então, os valores numéricos que usei são apenas para teste. O vídeo original tem dimensões de 72: 48px. Eu tentei o comando assim:

ffmpeg -i background.jpg -vf "movie=overlay.mp4, scale=128:96 [inner]; [in][inner] overlay=70:70 [out]" -y output.mp4

No entanto, produz instantaneamente um vídeo vazio. Se, por outro lado, eu tentar inserir -loop 1 logo após o comando ffmpeg , o processamento do vídeo parece levar um tempo infinito e nunca termina.

O que estou tentando alcançar é evitar criar um vídeo dimensionado primeiro. É possível e o que estou fazendo errado?

    
por cincplug 22.04.2016 / 10:27

1 resposta

3

Use

ffmpeg -loop 1 -i background.jpg \
       -vf "movie=overlay.mp4,scale=128:96[inner];[in][inner]overlay=70:70:shortest=1[out]" \
       -y output.mp4

A imagem precisa estar em loop, mas isso criará um fluxo interminável, portanto, o argumento mais curto no filtro de sobreposição interromperá o filtro quando o filme terminar.

Com o áudio da sobreposição incluído

ffmpeg -loop 1 -i background.jpg -i overlay.mp4 \
       -filter_complex "[1]scale=128:96[inner];[0][inner]overlay=70:70:shortest=1[out]" \
       -map "[out]" -map 1:a -c:a copy -y output.mp4
    
por 22.04.2016 / 14:43