Adicionando overlay ao fazer um corte preciso no ffmpeg

0

Eu tenho arquivos de vídeo longos que eu gostaria de cortar em timestamp preciso e também preciso adicionar marca d'água. Antes eu precisava adicionar marca d'água Eu usei este comando e funcionou muito bem:

ffmpeg -ss 00:00:20.480 -i "INPUT.mp4" -ss 00:00:10.000 -t 00:11:39.960 -c:a copy -c:v libx264 -filter:v "scale=1280:-1" -preset slow -crf 25 "OUTPUT.mp4"

Mas agora preciso adicionar marca d'água. Eu tentei usar o filtro de sobreposição (que usa o segundo arquivo de entrada). Eu uso o formato de arquivo apng para obter transparência:

ffmpeg -ss 00:01:00.680 -i "INPUT.mp4" -ss 00:00:10.000 -t 00:11:39.759 -i overlay.apng -c:a copy -c:v libx264 -filter_complex "crop=in_w-8:in_h-8,overlay,scale=1280:-1" -preset slow -crf 25 "OUTPUT.mp4"

Infelizmente, neste caso o ffmpeg ignora o segundo switch. Sem este interruptor não há um corte preciso. Mesmo se eu der o timestamp apropriado para o primeiro switch, haverá algum congelamento de quadro ao tocar os primeiros segundos de um arquivo de vídeo.

Eu vim com uma correção rápida e feia encadeando dois processos ffmpeg, como este:

ffmpeg -ss 00:00:15.640 -i "INPUT.mp4" -ss 00:00:10.000 -t 00:11:39.800 -c:a copy -c:v huffyuv -f matroska - | ffmpeg -i pipe:0 -i overlay.apng -filter_complex "crop=in_w-8:in_h-8,overlay=y=main_h-overlay_h:x=0,scale=1280:-1" -c:a copy -c:v libx264 -preset slow -crf 25 "OUTPUT.mp4"

Nesse caso, todo o desempenho de codificação cai 30%.

Meu objetivo é cortar e adicionar marcas d'água no comando único. Por favor ajude.

    
por c97 09.09.2017 / 21:51

1 resposta

1

A ordem das opções é importante. Consulte o link

Use

ffmpeg -ss 00:01:00.680 -i "INPUT.mp4" -i overlay.apng -ss 00:00:10.000 -t 00:11:39.759
       -filter_complex "[0]crop=in_w-8:in_h-8[a];[a][1]overlay,scale=1280:-1"
       -c:a copy -c:v libx264 -preset slow -crf 25 "OUTPUT.mp4"

Não está claro o que você quis dizer para aplicar a cultura. Eu suponho que seja a primeira entrada, já que é atualmente como o ffmpeg está lidando com o seu comando atual. Caso contrário, alimente [1] para cortar e [0][a] para a sobreposição.

    
por 10.09.2017 / 06:47