4 votes

créer une vidéo à partir d'images jpg en utilisant ffmpeg

Je veux faire une courte vidéo timelapse en utilisant ffmpeg sous ubuntu 12.04 LTS. J'ai un dossier contenant toutes les images avec les noms DSC_0000.jpg DSC_0001.jpg et ainsi de suite. J'ai trouvé cette question ffmpeg : créer une vidéo à partir d'images et j'essaie d'exécuter la même commande que celle mentionnée ici :

ffmpeg -i DSC_%d.jpg -vcodec mpeg4 timelapse.avi

et il échoue avec

DSC_%d.jpg : Aucun fichier ou répertoire de ce type.

J'ai aussi essayé

ffmpeg -i DSC_%04d.jpg -vcodec mpeg4 timelapse.avi

et il échoue avec la même erreur

Et aussi pour une raison quelconque mon ffmpeg ne comprend pas l'option -début_numéro si j'exécute

ffmpeg -start_number 0 -i DSC_%d.jpg -vcodec mpeg4 timelapse.avi

Je reçois cette erreur :

L'option 'start_number' n'est pas reconnue.

Impossible de définir la valeur '0' pour l'option 'start_number'.

J'apprécierais toute aide

UPD1 : J'ai réessayé la deuxième commande et maintenant, pour une raison quelconque, ça marche. Mais le fichier vidéo de sortie est un peu étrange : Il commence normalement, mais la qualité se dégrade à chaque image. Et devient terrible à la fin de la vidéo. Et le résultat est que le fichier vidéo est très petit (seulement 1.2 Mb, alors que chacune des 46 images fait 900 kb). Mais l'option -début_numéro ne fonctionne toujours pas. Voici le résultat complet :

$ ffmpeg -i DSC_%04d.jpg -vcodec mpeg4 timelapse.avi
ffmpeg version 0.10.12-7:0.10.12-1~precise1 Copyright (c) 2000-2014 the FFmpeg developers
  built on Apr 26 2014 09:49:36 with gcc 4.6.3
  configuration: --arch=amd64 --disable-stripping --enable-pthreads --enable-runtime-cpudetect --extra-version='7:0.10.12-1~precise1' --libdir=/usr/lib/x86_64-linux-gnu --prefix=/usr --enable-bzlib --enable-libdc1394 --enable-libfreetype --enable-frei0r --enable-gnutls --enable-libgsm --enable-libmp3lame --enable-librtmp --enable-libopencv --enable-libopenjpeg --enable-libpulse --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-vaapi --enable-vdpau --enable-libvorbis --enable-libvpx --enable-zlib --enable-gpl --enable-postproc --enable-libcdio --enable-x11grab --enable-libx264 --shlibdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-static
  libavutil      51. 35.100 / 51. 35.100
  libavcodec     53. 61.100 / 53. 61.100
  libavformat    53. 32.100 / 53. 32.100
  libavdevice    53.  4.100 / 53.  4.100
  libavfilter     2. 61.100 /  2. 61.100
  libswscale      2.  1.100 /  2.  1.100
  libswresample   0.  6.100 /  0.  6.100
  libpostproc    52.  0.100 / 52.  0.100
Input #0, image2, from 'DSC_%04d.jpg':
  Duration: 00:00:01.84, start: 0.000000, bitrate: N/A
    Stream #0:0: Video: mjpeg, yuvj422p, 2304x1536 [SAR 300:300 DAR 3:2], 25 fps, 25 tbr, 25 tbn, 25 tbc
File 'timelapse.avi' already exists. Overwrite ? [y/N] y
Incompatible pixel format 'yuvj422p' for codec 'mpeg4', auto-selecting format 'yuv420p'
[buffer @ 0x7134e0] w:2304 h:1536 pixfmt:yuvj422p tb:1/1000000 sar:300/300 sws_param:
[buffersink @ 0x70bbe0] auto-inserting filter 'auto-inserted scale 0' between the filter 'src' and the filter 'out'
[scale @ 0x6f7a20] w:2304 h:1536 fmt:yuvj422p -> w:2304 h:1536 fmt:yuv420p flags:0x4
Output #0, avi, to 'timelapse.avi':
  Metadata:
    ISFT            : Lavf53.32.100
    Stream #0:0: Video: mpeg4 (FMP4 / 0x34504D46), yuv420p, 2304x1536 [SAR 1:1 DAR 3:2], q=2-31, 200 kb/s, 25 tbn, 25 tbc
Stream mapping:
  Stream #0:0 -> #0:0 (mjpeg -> mpeg4)
Press [q] to stop, [?] for help
frame=   46 fps= 17 q=31.0 Lsize=    1143kB time=00:00:01.84 bitrate=5090.2kbits/s    
video:1137kB audio:0kB global headers:0kB muxing overhead 0.591912%

roman@Z500i5:~/Camera/Thunder/video$ ffmpeg -start_number 0 -i DSC_%04d.jpg -vcodec mpeg4 timelapse.avi
ffmpeg version 0.10.12-7:0.10.12-1~precise1 Copyright (c) 2000-2014 the FFmpeg developers
  built on Apr 26 2014 09:49:36 with gcc 4.6.3
  configuration: --arch=amd64 --disable-stripping --enable-pthreads --enable-runtime-cpudetect --extra-version='7:0.10.12-1~precise1' --libdir=/usr/lib/x86_64-linux-gnu --prefix=/usr --enable-bzlib --enable-libdc1394 --enable-libfreetype --enable-frei0r --enable-gnutls --enable-libgsm --enable-libmp3lame --enable-librtmp --enable-libopencv --enable-libopenjpeg --enable-libpulse --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-vaapi --enable-vdpau --enable-libvorbis --enable-libvpx --enable-zlib --enable-gpl --enable-postproc --enable-libcdio --enable-x11grab --enable-libx264 --shlibdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-static
  libavutil      51. 35.100 / 51. 35.100
  libavcodec     53. 61.100 / 53. 61.100
  libavformat    53. 32.100 / 53. 32.100
  libavdevice    53.  4.100 / 53.  4.100
  libavfilter     2. 61.100 /  2. 61.100
  libswscale      2.  1.100 /  2.  1.100
  libswresample   0.  6.100 /  0.  6.100
  libpostproc    52.  0.100 / 52.  0.100
Unrecognized option 'start_number'
Failed to set value '0' for option 'start_number'

Mon ffmpeg est installé à partir de ce ppa : https://launchpad.net/~jon-severinsson/+archive/ffmpeg

La sortie de ffmpeg à partir des dépôts ubuntu standard était seulement les deux dernières lignes :

Unrecognized option 'start_number'
Failed to set value '0' for option 'start_number'

UPD2 : Voir la réponse ci-dessous

0voto

floppydisk Points 41

J'ai finalement trouvé une solution, mais sans ffmpeg. Cette commande fait ce que je voulais :

mencoder "mf://*.jpg" -mf fps=20:type=jpg -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell:vbitrate=7000 -oac copy -o timelapse.avi

Cela semble un peu trop compliqué, mais cela fait l'affaire :)

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X