Insertar fotogramas negros delante y detrás de un vídeo

Por asuntos de trabajo me interesaba automatizar el proceso de insertar frames de negro delante y detrás de un master para prepararlo para emisión. También me interesaba insertar un código de tiempo determinado.

Con FFMpeg lo he conseguido. Ha sido un proceso largo porque han surgido varios problemas pero lo he solucionado. Quiero dar las gracias a las personas que me han ayudado en los foros de FFMpeg y Super User.

Este es el código para insertar en el Terminal:

ffmpeg -f lavfi -i color=c=black:s=1920×1080:r=25:d=1 -f lavfi -i “aevalsrc=0:c=stereo:d=1″ -i input.mov -filter_complex “[0:v] trim=start_frame=1:end_frame=3 [blackstart]; [0:v] trim=start_frame=1:end_frame=5 [blackend]; [1:a] atrim=duration=0.12 [audiostart]; [1:a] atrim=duration=0.2 [audioend]; [blackstart] [audiostart] [2:v] [2:a] [blackend] [audioend] concat=n=3:v=1:a=1[v][a]” -map “[v]” -map “[a]” -c:v qtrle -c:a pcm_s24le -ar 48000 -timecode 00:02:00:00 output.mov

Siendo input.mov el vídeo en el que queremos insertar 3 fotogramas de negro delante y 5 fotogramas de negro detrás.

Creamos un TC de 2min. En este caso el audio lo queremos a 24 bits y PCM Little Endian. Para la salida del vídeo usaremos el códec Animation -c:v qtrle en Quick Time.

El audio me ha dado problemas porque tenía que generar silencio de la misma duración que los frames de negro. En FFMpeg, los generadores de audio no manejan frames. O usas segundos o sampleos. Por tanto, para conseguir la duración de 3 frames he tenido que darle una duración de 0.12: [1:a] atrim=duration=0.12 [audiostart]

Había dos maneras de generar el silencio de audio. Con aevalsrc=0:d=1 o con anullsrc. Este último me gustaba porque daba la salida por defecto en estéreo y leí que trabaja más rápido mientras que aevalsrc lo sacaba en mono. El problema es que con anullsrc generaba un ruido de fondo que no conseguí quitar ni saber por qué lo generaba. Con aevalsrc el audio estaba perfecto pero era mono. Para conseguir estéreo lo solucioné añadiendo: -i “aevalsrc=0:c=stereo:d=1”

Detallo los pasos:

1 Genero una entrada de negro en HD de 1s

-f lavfi -i color=c=black:s=1920×1080:r=25:d=1

2 Genero un silencio estéreo de 1s

-f lavfi -i “aevalsrc=0:c=stereo:d=1″

3 Añado la entrada del vídeo al que quiero añadir los negros.

-i input.mov

4 Proceso de unir y trimear y ordenar las 3 entradas.

-filter_complex “[0:v] trim=start_frame=1:end_frame=3 [blackstart]; [0:v] trim=start_frame=1:end_frame=5 [blackend]; [1:a] atrim=duration=0.12 [audiostart]; [1:a] atrim=duration=0.2 [audioend]; [blackstart] [audiostart] [2:v] [2:a] [blackend] [audioend] concat=n=3:v=1:a=1[v][a]” -map “[v]” -map “[a]”

5 Settings de salida del vídeo, audio y TC

-c:v qtrle -c:a pcm_s24le -ar 48000 -timecode 00:02:00:00 output.mov

Anuncios

Un comentario en “Insertar fotogramas negros delante y detrás de un vídeo

  1. Pingback: Sincros A/V con FFMpeg | salvaestudio

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s