FFMPEG filtro de sobreposição parcialmente convertido

0

Estou tentando aplicar o filtro de sobreposição ao vídeo para mesclar uma única imagem por alguns segundos. Como a duração do meu vídeo é de cerca de 1 min, parece um desperdício quando o FFMPEG tenta recodificar todo o vídeo novamente, em vez de reencodificar a parte do vídeo que precisa ser alterada.

Meu comando de mesclagem de vídeo é:

ffmpeg -i beach.mp4 -i logo.png 
-filter_complex "[0:v][1:v] overlay=25:25:enable='between(t,0,20)'" 
-pix_fmt yuv420p -c:a copy output.mp4

Alguém sabe como posso evitar isso? (Eu estava pensando em dividir o vídeo, mas parece que o vídeo não pode ser dividido com precisão especificando o quadro inicial e final)

    
por dajuric 29.02.2016 / 23:53

1 resposta

2

Como você está bem com alguma imprecisão, sugiro o seguinte método:

Segmente a entrada de vídeo

ffmpeg -i beach.mp4 -c copy -segment_time 20 -f segment beach_seg%02d.mp4

Logotipo de sobreposição no primeiro segmento

ffmpeg -i beach_seg00.mp4 -loop 1 -i logo.png 
-filter_complex "[0:v][1:v] overlay=25:25:shortest=1" 
-pix_fmt yuv420p -c:a copy overlay.mp4

Segmentos de concat

Primeiro, prepare um arquivo de texto segments.txt

file 'overlay.mp4'
file 'beach_seg01.mp4'
file 'beach_seg02.mp4'
file 'beach_seg03.mp4'
...

Então, concat

ffmpeg -f concat -i segments.txt -c copy beach_with_logo.mp4

A advertência aqui é que a base de tempo de sobreposição.mp4 pode não coincidir com a dos segmentos de praia. Nesse caso, verifique a base de tempo de um dos segmentos de praia (o tbn ) e adicione -video_track_timescale <tbn> ao comando de sobreposição.

    
por 03.03.2016 / 07:14