
Estou tentando reproduzir o vídeo background.mp4 enquanto outro vídeo overlay.mp4 é sobreposto em um pequeno retângulo sobre o vídeo de fundo. O vídeo de sobreposição deve ser atrasado.
Procurando o ffmpeg, criei o seguinte comando:
ffmpeg -i background.mp4
-i overlay.mp4
-filter_complex "[1]setpts=PTS-STARTPTS+162/TB, scale=512:288 [over];
[0][over] overlay=748:412 [outv];
[1:a]adelay=162000|162000 [audio];
[0:a][audio] amix [outa]"
-map "[outv]"
-map "[outa]"
-codec:v libx264
-crf 21
-bf 2
-flags +cgop
-pix_fmt yuv420p
output.mp4
Isso mescla com sucesso os vídeos do jeito que eu quero. No entanto, o vídeo sobreposto está gaguejandobastante(como em congelamentos de até 30 segundos), enquanto o vídeo de fundo está sendo reproduzido bem.
O console exibe muitas mensagens dizendo: "Estouro da fila do buffer, caindo."
Eu procurei por isso on-line e descobri que deveria adicionar um buffer fifo. Então eu tentei:
ffmpeg -i background.mp4
-i overlay.mp4
-filter_complex "[1]fifo, setpts=PTS-STARTPTS+162/TB, scale=512:288 [over];
[0][over] overlay=748:412 [outv];
[1:a]adelay=162000|162000 [audio];
[0:a][audio] amix [outa]"
-map "[outv]"
-map "[outa]"
-codec:v libx264
-crf 21
-bf 2
-flags +cgop
-pix_fmt yuv420p
output.mp4
No entanto, este comando nunca termina com sucesso. Depois de passar cerca de 60 segundos de vídeo, ele é abortado apenas com a mensagem "Morto".
Presumo que isso se deva à falta de memória, embora não tenha certeza disso. O que eu faço agora? Alguma idéia de como sobrepor os vídeos com êxito, de modo que o vídeo sobreposto tenha a (pelo menos aproximadamente) a mesma taxa de quadros do vídeo de fundo?