No tengo ningún conocimiento sobre codificación de video, tengo una aplicación escrita en OpenGL y estoy guardando los fotogramas que generó en png imágenes. Los fotogramas de mi aplicación están a 7 FPS y estoy tratando de crear un video a partir de ellos.

Para ese propósito, uso ffmpeg como este

ffmpeg -framerate 30 -i img%03d.png -c:v libx264 -r 30 -pix_fmt yuv420p out.mp4

que se tomó de este sitio , sin embargo, me preguntaba si es posible tener un video que muestre la animación a 30 FPS?

Comentarios

Respuesta

Estoy usando el siguiente código para hacer lo mismo.

ffmpeg -framerate 30 -i img%03d.png -c:v libx264 -pix_fmt yuv420p -crf 23 output.mp4 

Desglosando el comando:

ffmpeg <- call ffmpeg -framerate 30 <- set the input framerate to 30 -i img%03d.png <- read PNG images with filename img001, img002, img003, etc.. img can be changed to another prefix %03d can be changed to %04d for 0001, %05d for 00001 formats, etc... -c:v libx264 <- Set the codec to libx264 -pix_fmt yuv420p <- Set the pixel format to planar YUV 4:2:0, 12bpp -crf 23 <- set the Constant Rate Factor to 23 (default value) -output.mp4 <- the output filename 

Esto lee la entrada a 30 fps (el -framerate 30 opción) y lo codifica usando el libx264 códec con factor de tasa constante de 23 (el -crf 23 opción).

Respuesta

Hay dos velocidades de cuadro a considerar: la entrada y la salida.

Por defecto, la velocidad de cuadro de entrada es 25 , y la salida utilizará 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 ingresar y para tener la misma velocidad de fotogramas, luego solo proporcione la velocidad de fotogramas de entrada. Este ejemplo establecerá una velocidad de fotogramas de 30000/1001 (video NTSC):

ffmpeg -framerate 30000/1001 -i input output.mp4 
  • Alternativamente, en este ejemplo, puede usar ntsc en lugar de 30000/1001, pero no utilice 29.97 porque no es exacto o Ver otros alias de velocidad de fotogramas .

  • Debido a que la velocidad de fotogramas de entrada predeterminada es 25, y si solo establezca una velocidad de fotogramas de salida, entonces los fotogramas se eliminarán o duplicarán para compensar. Es por eso que la velocidad de fotogramas de entrada se establece en esta situación.

Diferente frecuencia de fotogramas para y salida

A veces es posible que desee que la velocidad de fotogramas de entrada y la velocidad de fotogramas de salida sean diferentes. Por ejemplo, es posible que desee introducir los fotogramas a una determinada frecuencia y luego duplicar o eliminar fotogramas para que la salida tenga una diferente velocidad de fotogramas. 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 marcos se duplicarán para ir de 10 a 25. La salida de la consola le dirá si los marcos se están descartando o duplicando.

  • El demuxer de archivos de imagen usa -framerate, mientras que la velocidad de fotogramas de salida se configura usando -r.

  • Es posible que deba agregar la opción -pix_fmt yuv420p en En algunas circunstancias, si está emitiendo video H.264 (la salida de la consola ffmpeg le advertirá si es necesario). Esto usará un esquema de submuestreo de croma que es compatible con todos los reproductores.

Comentarios

  • ffmpeg versión 3.2.2 me dice: Option framerate not found. 🙁
  • Sí, tienes razón. Sin embargo, la opción -framerate no existe Eliminaré mi comentario, ya que realmente no tiene nada que ver con convertir una serie de imágenes en un video con una determinada velocidad de fotogramas.
  • @erik -framerate ' s utilizado por los demuxers de imagen y vídeo sin formato y algunos dispositivos de entrada como x11grab y v4l2.
  • ¿Dónde está la opción -framerate documentado? Yo ' he leído la página man ffmpeg, pero no pude ' no encontrarlo. ¿Algún puntero, tal vez?
  • OK, lo encontré … FFMPEG-DEVICES(1).

Answer

ffmpeg -framerate 30 -i img%03d.png output.mp4 

será suficiente en las últimas t de ffmpeg.

Comentarios

Respuesta

Estás hablando de interpolación de video. No hay forma de que 7 fps se conviertan en 30 fps sin la interpolación de video … Básicamente, desea obtener 30 fps desde el principio, en el proceso de hacer videos … Como la interpolación de video requerirá muchos recursos y tiempo, y podría estar lleno de artefactos.Escuché que puedes convertir una imagen de un solo disparo en películas cortas, con adobe, pero hay mucho trabajo manual allí …

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *