FFMPEG: convierte un vídeo en un timelapse

FFMPEG: convierte un vídeo en un timelapse

Estoy usando ffmpeg en flash builder (script de acción 3) para convertir un video en un lapso de tiempo del video. He descubierto cómo usar setpts para hacer esto, pero el archivo de salida resultante tiene la misma longitud que la entrada (solo se muestra el último fotograma después del lapso de tiempo), quiero que la duración se cambie según la configuración pasada. a ffmpeg.

Primero estoy intentando lo siguiente a través de la línea de comando:

ffmpeg -i input.mp4 -filter:v "setpts=0.5*PTS" output.mp4

¡Cualquier ayuda sería muy apreciada!

Respuesta1

Problema resuelto. No estaba eliminando el audio, por lo que presumiblemente estaba reproduciendo el archivo de audio, casi vacío, durante todo el tiempo del video.

ffmpeg -i input.mp4 -filter:v "setpts=0.5*PTS" -an output.mp4

-an elimina el audio del vídeo.

Respuesta2

Algunos detalles más aquí sobre cómo acelerar el audio. Puedes hacerlo hasta 2x, pero puedes engañarlo para acelerar aún más (fuente):

Acelerar/ralentizar el audio

Puedes acelerar o ralentizaraudiocon el filtro de audio atempo. Para duplicar la velocidad del audio:

ffmpeg -i input.mkv -filter:a "atempo=2.0" -vn output.mkv

El filtro atempo se limita a utilizar valores entre 0,5 y 2,0 (por lo que puede reducir la velocidad hasta no menos de la mitad de la velocidad original y acelerar hasta no más del doble de la entrada). Si es necesario, puede sortear esta limitación encadenando varios filtros de atempo. Lo siguiente con el cuádruple de la velocidad del audio:

ffmpeg -i input.mkv -filter:a "atempo=2.0,atempo=2.0" -vn output.mkv

Usando un gráfico de filtro complejo, puedes acelerar el video y el audio al mismo tiempo:

ffmpeg -i input.mkv -filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2.0[a]" -map "[v]" -map "[a]" output.mkv

información relacionada