¿Cómo cortar fotogramas de vídeo específicos con ffmpeg y convertir la velocidad de fotogramas?

¿Cómo cortar fotogramas de vídeo específicos con ffmpeg y convertir la velocidad de fotogramas?

Desde hace un par de días tengo un problema con ffmpeg que en realidad me está volviendo loco... Intento usar filter_complex de FFMPEG para extraer ciertos segmentos cortos de un archivo de vídeo (filmados a 60 fps). Conozco los fotogramas exactos del metraje original que quiero usar para cortar. Yo uso elrecortarcomando de filtro junto conajustes, si quiero cambiar la velocidad de cada fragmento. En el caso real, quiero tener el primer fragmento en la velocidad original (1.0), y el video de salida resultante debe estar a 30 fps en lugar de las imágenes originales a 60 fps. Aquí está el código que estoy usando:

ffmpeg -y -i footage60fps -filter_complex " 
[0:v]trim=start_frame=28:end_frame=82,setpts=PTS-
STARTPTS,setpts=1.0*PTS[v0]; 
[0:v]trim=start_frame=10:end_frame=20,setpts=PTS-
STARTPTS,setpts=2.0*PTS[v1]; [v0][v1]concat=n=2:v=1:a=0[out] " -map [out] -
preset ultrafast -r 30 output30fps.mp4

El resultado que espero sería que en el primer fragmento (fotograma 28 hasta el último antes del 82) ffmpeg eliminaría cada segundo fotograma ([x]) para convertirlo de 60 fps a 30 fps a velocidad normal: [28] [x][30][x][32][x]...[80]

Sin embargo, el resultado que obtengo es: [28][29][30][31][x][33][x][35][x]...[81]

¿Alguien entiende este comportamiento? ¿Cómo podría solucionarlo? Parece un problema menor, pero resulta muy molesto cuando se corta la música, etc. ¡Cualquier ayuda sería muy apreciada!

Respuesta1

Usar

ffmpeg -y -i footage60fps -filter_complex " 
[0:v]trim=start_frame=28:end_frame=82,setpts=PTS-STARTPTS,framestep=2[v0]; 
[0:v]trim=start_frame=10:end_frame=20,setpts=PTS-STARTPTS,setpts=2.0*PTS[v1];
[v0][v1]concat=n=2:v=1:a=0[out]" -map [out] -r 30 -preset ultrafast output30fps.mp4

No he investigado las razones del comportamiento que ves, pero cuando mezclas diferentes flujos de velocidad como este con el filtro concat y aplicas una conformidad de velocidad CFR, la cadencia de caída de fotogramas no siempre es la esperada.

información relacionada