Filtrar y fusionar en ffmpeg a la vez

Filtrar y fusionar en ffmpeg a la vez

Me gustaría hacer varias modificaciones en archivos de video a la vez.

Necesito agregar un fragmento de video de introducción y cierre al video de entrada. Entonces esto significa fusionar 3 videos. Necesito agregar una imagen superpuesta al video de entrada (el segundo segmento) y solo eso. ¿Cómo puedo combinarlos en una línea?

Logré hacer esto en dos pasos. Primero la superposición:

ffmpeg -i input.mkv -i image.png -filter_complex overlay=main_w-overlay_w-0:0 output_file.mkv

Luego la fusión:

ffmpeg -i intro.mp4 -i input.mkv -i outro.mp4 -filter_complex "[0:v:0][0:a:0][1:v:0][1:a:0][2:v:0][2:a:0]concat=n=3:v=1:a=1[video_out][audio_out]" -map "[video_out]" -map "[audio_out]" output_file.mkv

Respuesta1

Podemos usar nombres temporales [v1]para la salida y overlay=main_w-overlay_w-0:0luego usarlos [v1]como entrada para el concatfiltro:

ffmpeg -i intro.mp4 -i input.mkv -i outro.mp4 -i image.png -filter_complex "[1:v][3:v]overlay=main_w-overlay_w-0:0[v1];[0:v:0][0:a:0][v1][1:a:0][2:v:0][2:a:0]concat=n=3:v=1:a=1[video_out][audio_out]" -map "[video_out]" -map "[audio_out]" output_file.mkv


  • La siguiente parte aplica la etapa de superposición:
    [1:v][3:v]overlay=main_w-overlay_w-0:0[v1]
    La salida superpuesta obtiene el nombre temporal [v1].
  • [0:v:0][0:a:0][v1][1:a:0][2:v:0][2:a:0]concat
    utiliza [v1]como entrada para concat(en lugar de [1:v:0]).

información relacionada