FFmpeg - Filtro de sobreposição. Possível definir eof_action para "passar" pelo arquivo mais longo?

1

Estou tentando sobrepor dois arquivos com o filtro de sobreposição FFmpeg lado a lado.

Os arquivos contêm durações diferentes. Eu brinquei com as várias eof_actions e outras configurações dos documentos do FFmpeg, mas não consigo descobrir uma maneira de obter a interação desejada.

Eu quero que os arquivos sejam reproduzidos lado a lado em uma tela preta e, quando o arquivo mais curto terminar, essa área continuará a mostrar "preto".

Eu posso conseguir um resultado adequado se eu definir o meu arquivo mais longo para ser o arquivo "principal" para o filtro de sobreposição E eu definir o eof_action para "passar" ... No entanto, eu quero repetir este comando em vários pares de arquivos e não sabe qual arquivo é o "mais longo".

Existe uma maneira de dizer ao ffmpeg para definir o eof_action para "passar" pelo maior dos dois arquivos?

Aqui está meu filtro atual:

-filter_complex "[0:v]setpts=PTS-STARTPTS[t1];[1:v]setpts=PTS-STARTPTS[t2]:[t2]pad=1000:500:0:0[p];[p][t1]overlay=x=500:y=0:eof_action=pass[out]" ......

... O comando acima funciona exatamente como eu quero, se [0: v] tiver uma duração maior que [1: v]. Existe uma maneira de ter a mesma interação em todos os casos, definindo o "eof_action" para "passar" pelo arquivo mais longo em vez do arquivo "principal"?

    
por occvtech 17.12.2015 / 23:54

1 resposta

2

Uso:

-filter_complex "[0:v]setpts=PTS-STARTPTS[t1];[1:v]setpts=PTS-STARTPTS[t2];[t1][t2]hstack[out]"

O comando acima não termina com a entrada mais curta, mas irá congelar o último quadro da entrada mais curta, então você pode querer acrescentar um quadro preto no final de cada uma das entradas, e então cortar o último quadro do resultado.

    
por 29.12.2015 / 14:14

Tags