¿Cómo acelero las velocidades de fotogramas de video más lentas con ffmpeg y obtengo 240 fps completos y videos no truncados?

Tengo un montón de videoclips de deportes que van de 6 a 25 segundos cada uno, todos grabados a 240 fps pero reducidos a 23,97, 25, 29,97 y 30 fps (por lo que están en cámara súper lenta). Necesito acelerarlos.

Tengo el siguiente comando:

ffmpeg -i input.mov -vf "setpts=(PTS-STARTPTS)/10" -crf 18 output.mov

... de otra pregunta de stackexchange.

Pude usar esto con éxito, pero tengo 3 preguntas:

1) ¿Cómo conservo todos los marcos? El video resultante tiene solo 30 fps, lo que significa que el proceso de conversión eliminó la gran mayoría de los cuadros; me gustaría que fuera realmente a 240 fps.

2) Algunos de los videos fueron truncados al final. Por ejemplo, un video de 11 segundos que originalmente mostraba un swing completo de derecha de tenis termina deteniéndose antes de que se complete el swing.

3) Leí la documentación durante probablemente unos buenos 30 minutos tratando de averiguar qué hace "-crf 18" y, por mi vida, no pude. ¡Me encantaría que alguien pudiera explicar esto!

Respuestas (1)

Utilizar

ffmpeg -i input.mov -vf "setpts=N/240/TB" -r 240 -crf 18 output.mov

Lo único que hace el filtro setpts es volver a programar los fotogramas, pero la velocidad de fotogramas designada de la transmisión sigue siendo su velocidad de fotogramas original, cualquiera que sea (25,30...). Use el filtro de fps para cambiar eso: el filtro de fps también puede eliminar o duplicar fotogramas, pero no en este caso. Hay un error en el filtro de fps que lo hace ineficaz para este propósito. Usar salida -r.

El codificador predeterminado para MOV en FFmpeg es libx264. Su modo de control de tasa predeterminado es CRF. Los valores más bajos retienen más de la calidad original pero producen archivos más grandes: 18 a 28 es un rango decente. Esto no tiene ningún efecto sobre qué fotogramas se incluyen en su salida.

¡Muchas gracias Gian! Esto funciona, excepto que el video resultante tiene la misma duración que el video original. Ves el swing de tenis de 1 segundo y luego 13 segundos más del último cuadro congelado.
¿Esto tiene audio?
Si alguien pudiera darme un poco más de ayuda, estaría muy agradecido. Revisé la documentación durante media hora buscando cosas relacionadas con la duración del video objetivo, pero todavía no tengo idea de cómo decirle a ffmpeg que acorte la duración del video en la misma proporción en que se acelera. Aquí está el video antiguo: enlace Aquí está el video nuevo: enlace Esto estaba usando este comando:ffmpeg - i inputfile -vf "setpts=(PTS-STARTPTS)/10" -crf 18 outputfile
¡Dios mío, acabo de darme cuenta de que hiciste una pregunta! No, eliminé el audio de los clips a propósito porque simplemente no es necesario. Espero que eso simplifique aún más las cosas. Lo siento por mi novato aquí... Pensé "¿Esto tiene audio?" La pregunta fue algo generado por el sitio web de StackExchange preguntándome si quería verbalizar mi comentario o algo así. Lo siento, muy estúpido de mi parte...
Gyan eres mi salvador. <Kissing feet> Aspiro a aprender más sobre ffmpeg, pero parece haber una curva de aprendizaje bastante alta... no fue posible lograrlo pronto sin su ayuda.