Adiciona dois vídeos a uma tela com ffmpeg

0

Eu modifiquei este código de exemplo ( link ):

ffmpeg
    -i 1.avi -i 2.avi -i 3.avi -i 4.avi
    -filter_complex "
        nullsrc=size=640x480 [base];
        [0:v] setpts=PTS-STARTPTS, scale=320x240 [upperleft];
        [1:v] setpts=PTS-STARTPTS, scale=320x240 [upperright];
        [2:v] setpts=PTS-STARTPTS, scale=320x240 [lowerleft];
        [3:v] setpts=PTS-STARTPTS, scale=320x240 [lowerright];
        [base][upperleft] overlay=shortest=1 [tmp1];
        [tmp1][upperright] overlay=shortest=1:x=320 [tmp2];
        [tmp2][lowerleft] overlay=shortest=1:y=240 [tmp3];
        [tmp3][lowerright] overlay=shortest=1:x=320:y=240
    "
    -c:v libx264 output.mkv

para usar apenas dois vídeos (esquerda e direita):

./ffmpeg -i 1.avi -i 2.avi -filter_complex "nullsrc=size=1856x578 [base]; [0:v] setpts=PTS-STARTPTS, scale=928x578 [upperleft];[1:v] setpts=PTS-STARTPTS, scale=928x578 [upperright];[base][upperleft] overlay=shortest=1 [tmp1]; [tmp1][upperright]overlay=shortest=1:x=320 [tmp2] " -c:v libx264 combo.avi

Mas sempre recebo o seguinte erro:

Filter overlay has an unconnected output

Qualquer ajuda seria ótima. Muito obrigado.

    
por digit 08.07.2016 / 12:28

1 resposta

1

Usando seu código adaptado, ele deve ser

ffmpeg -i 1.avi -i 2.avi -filter_complex "nullsrc=size=1856x578[base];[0:v] setpts=PTS-STARTPTS,scale=928x578[upperleft];[1:v]setpts=PTS-STARTPTS, scale=928x578[upperright];[base][upperleft] overlay=shortest=1 [tmp1]; [tmp1][upperright]overlay=shortest=1:x=320 [tmp2] " -map "[tmp2]" -c:v libx264 combo.avi

Você pode querer confirmar o valor x na sobreposição. Eu deixei inalterado, mas provavelmente deve ser 928 .

Mas a melhor maneira de fazer isso é

ffmpeg -i 1.avi -i 2.avi -filter_complex "[0:v][1:v]hstack" -c:v libx264 combo.avi
    
por 08.07.2016 / 13:50

Tags