No tengo ningún conocimiento sobre codificación de video, tengo una aplicación escrita en OpenGL y estoy guardando los cuadros que generó en png
imágenes. Los marcos de mi aplicación están a 7 FPS y estoy tratando de crear un video a partir de ellos.
Para ello utilizo ffmpeg como este
ffmpeg -framerate 30 -i img%03d.png -c:v libx264 -r 30 -pix_fmt yuv420p out.mp4
que fue tomado de este sitio , sin embargo, me preguntaba si es posible tener un video que muestre la animación a 30 FPS?
-framerate
parámetro para obtener los resultados deseados.Respuestas:
Estoy usando el siguiente código para hacer lo mismo.
Desglosando el comando:
Esto lee la entrada a 30 fps (la
-framerate 30
opción) y la codifica utilizando ellibx264
códec con un factor de velocidad constante de 23 (la-crf 23
opción).fuente
Hay dos velocidades de cuadros a considerar: la entrada y la salida.
Por defecto, la velocidad de fotogramas de entrada es 25, y la salida usará la misma velocidad de fotogramas que la entrada a menos que usted indique lo contrario.
Misma velocidad de fotogramas para entrada y salida
Si desea que la entrada y la salida tengan la misma velocidad de fotogramas, simplemente proporcione la velocidad de fotogramas de entrada. Este ejemplo establecerá una velocidad de cuadro de 30000/1001 (video NTSC):
Alternativamente, en este ejemplo, podría usar en
ntsc
lugar de30000/1001
, pero no usar29.97
porque eso no es exacto o correcto. Ver otros alias de velocidad de cuadros .Debido a que la velocidad de fotogramas de entrada predeterminada es 25, y si solo configura una velocidad de fotogramas de salida, los fotogramas se eliminarán o duplicarán para compensar. Es por eso que la velocidad de cuadros de entrada se establece en esta situación.
Velocidad de fotogramas diferente para entrada y salida
A veces es posible que desee que la velocidad de fotogramas de entrada y la velocidad de fotogramas de salida difieran. Por ejemplo, es posible que desee ingresar los fotogramas a una velocidad determinada y luego duplicar o soltar fotogramas para que la salida tenga una velocidad de fotogramas diferente. Es posible que desee hacer esto debido a problemas de compatibilidad con su contenedor de formato de salida, su reproductor y / o su dispositivo:
En este ejemplo, los fotogramas se duplicarán para pasar de 10 a 25. La salida de la consola le dirá si los fotogramas se caen o se duplican.
El demuxer del archivo de imagen usa
-framerate
, mientras que la velocidad de fotogramas de salida se establece usando-r
.Es posible que deba agregar la
-pix_fmt yuv420p
opción en algunas circunstancias si está emitiendo video H.264 (laffmpeg
salida de la consola le avisará si es necesario). Esto usará un esquema de submuestreo de croma que es compatible con todos los jugadores.fuente
Option framerate not found.
:-(-framerate
ya no existe. Eliminaré mi comentario, ya que realmente no tiene nada que ver con convertir una serie de imágenes a un video con una cierta tasa de cuadros.-framerate
existe. Lo utilizan los demuxers de imagen y rawvideo y algunos dispositivos de entrada como x11grab y v4l2.-framerate
documenta la opción ? He leído laman ffmpeg
página, pero no pude encontrarla. Cualquier puntero, tal vez?FFMPEG-DEVICES(1)
.será suficiente en la última versión de ffmpeg.
fuente