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!
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.
OstinatoFreak
gian
OstinatoFreak
ffmpeg - i inputfile -vf "setpts=(PTS-STARTPTS)/10" -crf 18 outputfile
OstinatoFreak
OstinatoFreak