FFMPEG presentación de diapositivas de imágenes – sólo se muestra un fotograma

Soy un principiante con ffmpeg.

Quiero convertir varias imágenes a una presentación de diapositivas y surgió con este comando:

ffmpeg -y -r 1/5 -i *.jpg -r 25 output.mp4 

Muy claro. Sin embargo, el video parece como sólo un marco largo (es demasiado rápido para reconocer para mí)

Aquí está el Ouput del comando anterior:

  ffmpeg version 0.8.9-4:0.8.9-0ubuntu0.12.04.1, Copyright (c) 2000-2013 the Libav developers built on Nov 9 2013 19:12:07 with gcc 4.6.3 *** THIS PROGRAM IS DEPRECATED *** This program is only provided for compatibility and will be removed in a future release. Please use avconv instead. Input #0, image2, from 'swirl3777.jpg': Duration: 00:00:05.00, start: 0.000000, bitrate: N/A Stream #0.0: Video: mjpeg, yuvj444p, 1600x1200 [PAR 72:72 DAR 4:3], 0.20 tbr, 0.20 tbn, 0.20 tbc Incompatible pixel format 'yuvj444p' for codec 'mjpeg', auto-selecting format 'yuvj420p' [buffer @ 0x86e2040] w:1600 h:1200 pixfmt:yuvj444p [avsink @ 0x86e8920] auto-inserting filter 'auto-inserted scaler 0' between the filter 'src' and the filter 'out' [scale @ 0x86e8d80] w:1600 h:1200 fmt:yuvj444p -> w:1600 h:1200 fmt:yuvj420p flags:0x4 Incompatible pixel format 'yuvj444p' for codec 'mjpeg', auto-selecting format 'yuvj420p' [buffer @ 0x86e8c00] w:1600 h:1200 pixfmt:yuvj444p [avsink @ 0x87159a0] auto-inserting filter 'auto-inserted scaler 0' between the filter 'src' and the filter 'out' [scale @ 0x86f1860] w:1600 h:1200 fmt:yuvj444p -> w:1600 h:1200 fmt:yuvj420p flags:0x4 Incompatible pixel format 'yuvj444p' for codec 'mpeg4', auto-selecting format 'yuv420p' [buffer @ 0x86f17c0] w:1600 h:1200 pixfmt:yuvj444p [avsink @ 0x870f4a0] auto-inserting filter 'auto-inserted scaler 0' between the filter 'src' and the filter 'out' [scale @ 0x8737e60] w:1600 h:1200 fmt:yuvj444p -> w:1600 h:1200 fmt:yuv420p flags:0x4 Output #0, image2, to 'swirl3786.jpg': Metadata: encoder : Lavf53.21.1 Stream #0.0: Video: mjpeg, yuvj420p, 1600x1200 [PAR 1:1 DAR 4:3], q=2-31, 200 kb/s, 90k tbn, 0.20 tbc Output #1, image2, to 'swirl3787.jpg': Metadata: encoder : Lavf53.21.1 Stream #1.0: Video: mjpeg, yuvj420p, 1600x1200 [PAR 1:1 DAR 4:3], q=2-31, 200 kb/s, 90k tbn, 0.20 tbc Output #2, mp4, to 'output.mp4': Metadata: encoder : Lavf53.21.1 Stream #2.0: Video: mpeg4, yuv420p, 1600x1200 [PAR 1:1 DAR 4:3], q=2-31, 200 kb/s, 25 tbn, 25 tbc Stream mapping: Stream #0.0 -> #0.0 Stream #0.0 -> #1.0 Stream #0.0 -> #2.0 Press ctrl-c to stop encoding frame= 1 fps= 0 q=10.2 Lq=10.2 q=9.5 size= -0kB time=0.04 bitrate= -4.4kbits/s video:584kB audio:0kB global headers:0kB muxing overhead -100.003680% 

También intenté avconv pero es la misma salida, incluso el mismo tamaño de archivo. Si cambio los valores -r a algo ridículo como 3434321 todavía obtiene el mismo tamaño de archivo. Si agrego -b 512k oder -b 1024 todavía obtiene el mismo tamaño de archivo de nuevo … Parece que, las opciones se ignoran de alguna manera.

Las tres imágenes de la carpeta se detectan correctamente.

¿Hay algún problema con el formato de píxel incompatible?

Estoy aquí en Ubuntu 12.04 ffmpeg versión 0.8.9-4: 0.8.9-0ubuntu0.12.04.1

¿Alguna conjetura, qué podría haber hecho mal aquí? TIA

Globo

ffmpeg de FFmpeg admite patrones de glob , por lo que sus archivos de entrada se puede nombrar casi cualquier cosa, siempre y cuando estén en el orden que desee:

 ffmpeg -framerate 1/5 -pattern_type glob -i "*.jpg" -vf "fps=25,format=yuv420p" out.mp4 

Ubuntu utiliza avconv y el buggy, falso " ffmpeg " de Libav, un bifurcador de FFmpeg, y estos no soportan patrones glob. Vea ¿Quién me puede decir la diferencia y la relación entre ffmpeg, libav y avconv?

Obtener ffmpeg

Para obtener ffmpeg , simplemente puede descargar una versión de Linux de ffmpeg o seguir una guía paso a paso para compilar ffmpeg .


Problemas potenciales

Se omite la primera imagen

Hay algunos problemas no resueltos o inconsistencias que implican -r y el filtro de vídeo fps . A veces, la primera imagen de entrada parece que se omite o se muestra para sólo un marco. Puede utilizar el filtro fps para evitar el problema de omisión como se muestra en mi ejemplo anterior. Vea los boletos # 1578 y # 3164 para más información.

Se omitió la última imagen

Puede parecer que la última imagen se omite o se muestra para un fotograma. No he encontrado una solución elegante para este comportamiento, pero simplemente puede hacer una copia del último archivo de imagen para compensar.

Más saltos

Si las imágenes de entrada no tienen el mismo formato de píxeles y / o tamaño de fotograma, entonces ffmpeg puede omitir un número indeterminado de fotogramas. Asegúrese de que todas las imágenes de entrada son similares para evitar esto. Puede ver la salida de la consola que mencionará cualquier diferencia de archivo de entrada.

El vídeo MP4 de salida no se reproduce

Utilice un reproductor menos asqueroso, o utilice el filtro de format como se muestra en mi ejemplo, o utilice la opción de salida -pix_fmt yuv420p . De lo contrario, ffmpeg intentará evitar o minimizar el submuestreo de crominancia (dependiendo de la entrada, el codificador que esté usando, la versión de ffmpeg y las opciones de codificación que use), y aunque esto puede ser bueno en un sentido técnico, puede crear un Salida que no es reproducible por reproductores no basados ​​en FFmpeg.

Prueba esto:

 ffmpeg -y -f image2 -r 1/5 -i img%03d.jpg -pix_fmt yuv420p -r 25 output.mp4 

Sus jpegs tienen que ser numerados secuencialmente en el formato img001.jpg … img009.jpg. El %03d significa una secuencia de 3 dígitos – 2 ceros iniciales para empezar. Si usted tenía img01.jpg a img 09.jpg usted utilizaría img%02d.jpg . La sintaxis *.jpg no funcionará.