Use isto:
ffmpeg -y -loop 1 -i background_image.png -i mainmovie.mov -filter_complex "[0:v]setpts=PTS-STARTPTS[V1]; [1:v]setpts=PTS-STARTPTS, scale=800:452[V2]; [V1][V2]overlay=shortest=1:x=240:y=134" out.mov
Aqui, a imagem de fundo (por exemplo, background_image.png
) é usada como uma entrada para o filtro de sobreposição, e o filme principal (por exemplo, mainmovie.mov
) é o outro. Para corresponder aos carimbos de data / hora inicial usei o filtro setps
para ambos, definindo o carimbo de data / hora inicial como 0. A saída da segunda entrada é dimensionada para 800x452 não 800x453 porque o filtro de escala tem problemas quando o número não é divisível por 2.
A saída deste é rotulada [V2] e passada para o filtro de sobreposição, enquanto se configura shortest=1
, implicando codificar até a entrada mais curta. Como a imagem de fundo é gerada em loop infinito, o tamanho mais curto aqui é o tamanho do filme principal de entrada. Então, codifica até o final do filme.
O posicionamento é na metade do valor de 1280-800 = 480, dividido por 2 para obter 240. Da mesma forma, para o valor de y pixels. Mas o seu canto real da caixa pode ser diferente. E talvez seja necessário usar mais parâmetros de codificação, dependendo do arquivo de filme de entrada e da saída necessária.