2010-10-12 8 views
16

He publicado esto como comentarios en this related thread. Sin embargo, parece que han pasado desapercibidas = (ffmpeg split avi en marcos con velocidad de fotogramas conocida

He usado

ffmpeg -i myfile.avi -f image2 image-%05d.bmp 

dividir myfile.avi en cuadros almacenados como archivos .bmp. Parecía funcionar, excepto no del todo. Al grabar mi vídeo, grabé a un ritmo de 1000fps y el video resultó ser 2min29sec largo. Si mis matemáticas es correcto, que debería ascender a un total de 149.000 marcos para todo el vídeo. Sin embargo, cuando me encontré

ffmpeg -i myfile.avi -f image2 image-%05d.bmp 

Solo obtuve 4472 archivos. ¿Cómo puedo obtener los marcos originales de 149k?

También trató de convertir la velocidad de fotogramas de mi original AVI a 1000fps haciendo

ffmpeg -i myfile.avi -r 1000 otherfile.avi 

pero esto no parecía que arreglar mi preocupación.

Respuesta

31
ffmpeg -i myfile.avi -r 1000 -f image2 image-%07d.png 

No estoy seguro de que la salida de archivos de 150k bmp sea una buena idea. Tal vez png es lo suficientemente bueno?

+0

Esto funcionó para mi video Grabé mi cámara con bolígrafo – silberbaum

11

La primera parte de su matemática es buena, los 2 minutos y 29 segundos son aproximadamente 149 segundos. Con 1000 fps que hace 149000 fotogramas. Sin embargo, su nombre de archivo de salida solo tiene 5 posiciones para el número donde 149000 tiene 6 posiciones, por lo que debe intentar "image-% 06d.bmp".

Luego está el tamaño del disco: ¿Sus imágenes caben en el disco? Con bmp, cada imagen usa su propio tamaño. Puede intentar usar imágenes JPEG, se comprimen unas 10 veces mejor.

Otra idea: si ffmpeg no encuentra una velocidad de fotogramas (razonable), se reduce a 25 o 30 fotogramas por segundo. Es posible que deba especificarlo. Haciéndolo tanto en origen y destino, consulte la página del manual (man ffmpeg en UNIX):

To force the frame rate of the input file (valid for raw formats 
    only) to 1 fps and the frame rate of the output file to 24 fps: 
      ffmpeg -r 1 -i input.m2v -r 24 output.avi 

Por lo que vale la pena: yo uso ffmpeg -y -i "video.mpg" -sameq "video.%04d.jpg" dividir mi vídeo a las imágenes. El -sameq es forzar el jpeg con una calidad razonable, el -y es evitar permitir que se sobrescriban las preguntas. Para usted:

-y ffmpeg -i -r 1000 "myfile.avi" -sameq "imagen 06d.jpg%."

+0

-sameq ahora está en desuso –

0

creo, hay una idea equivocada aquí: la salida de un sistema de vídeo SA es poco probable que tenga una tasa de cuadros de salida de 1000 fps, pero algo más normal que 30 (o 50/60) fps. Además de sobrecargar la mayoría de los reproductores de video con este tipo de velocidad, sería contraproducente mostrar la secuencia a la misma velocidad que se grabó. Básicamente: 1 segundo a 1000 fps de entrada es algo así como 33 segundos a 30 fps de salida.

¿La duración de la escena realmente fue de 2:29 min (resultando en un video ~ 82 min a una velocidad normal) o tardó aproximadamente 4.5 segundos (4472 cuadros) que es 2:29 minutos en la reproducción normal?

Cuestiones relacionadas