Utilisation de ffmpeg pour créer un film à partir de fichiers png

11

J'ai 277 fichiers png 800x600 avec des noms de fichiers au format island_sizes-CSH (II) - ###. Png où ### est un nombre commençant par 084 et se terminant à 360.

Je fais

ffmpeg -i island_sizes-CSH\(II\)-*.png output.mpg -y

mais ça ne marche pas:

ffmpeg -f image2 -i island_sizes-CSH \ (II \) - *. png video.mpg -y
ffmpeg version 1.2.1 Copyright (c) 2000-2013 les développeurs FFmpeg
  construit le 10 mai 2013 15:14:14 avec gcc 4.4.6 (GCC) 20120305 (Red Hat 4.4.6-4)
  configuration: --prefix = / usr --libdir = / usr / lib64 --shlibdir = / usr / lib64 --mandir = / usr / share / man --enable-shared --enable-runtime-cpudetect --enable- gpl --enable-version3 --enable-postproc --enable-avfilter --enable-pthreads --enable-x11grab --enable-vdpau --disable-avisynth --enable-frei0r --enable-libopencv --enable- libdc1394 --enable-libgsm --enable-libmp3lame --enable-libnut --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librtmp --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --enable-libxvid --extra-cflags = '- O2 -g -pipe -Wall -Wp, -D_FORTIFY_SOURCE = 2 -fexceptions - fstack-protector --param = ssp-buffer-size = 4 -m64 -mtune = generic -fPIC '--disable-stripping
  libavutil 52. 18.100 / 52. 18.100
  libavcodec 54. 92.100 / 54. 92.100
  libavformat 54. 63.104 / 54. 63.104
  libavdevice 54. 3.103 / 54. 3.103
  libavfilter 3. 42.103 / 3. 42.103
  libswscale 2. 2.100 / 2. 2.100
  libswresample 0. 17.102 / 0. 17.102
  libpostproc 52. 2.100 / 52. 2.100
Entrée # 0, image2, de 'island_sizes-CSH (II) -084.png':
  Durée: 00: 00: 00.04, début: 0.000000, débit: N / A
    Stream # 0: 0: Vidéo: png, rgba, 800x600 [SAR 3937: 3937 DAR 4: 3], 25 tbr, 25 tbn, 25 tbc
[png @ 0x1468c20] ff_frame_thread_encoder_init a échoué
Sortie # 0, image2, vers 'island_sizes-CSH (II) -085.png':
    Stream # 0: 0: Vidéo: png, rgba, 800x600 [SAR 1: 1 DAR 4: 3], q = 2-31, 200 kb / s, 90k tbn, 25 tbc
Sortie # 1, image2, vers 'island_sizes-CSH (II) -086.png':
    Stream # 1: 0: Vidéo: png, rgba, 800x600 [SAR 1: 1 DAR 4: 3], q = 2-31, 200 kb / s, 90k tbn, 25 tbc
...
Sortie # 274, image2, vers 'island_sizes-CSH (II) -359.png':
    Stream # 274: 0: Vidéo: aucun, rgba, 800x600 [SAR 1: 1 DAR 4: 3], q = 2-31, 200 kb / s, 90k tbn, 25 tbc
Sortie # 275, image2, vers 'island_sizes-CSH (II) -360.png':
    Stream # 275: 0: Vidéo: aucun, rgba, 800x600 [SAR 1: 1 DAR 4: 3], q = 2-31, 200 kb / s, 90k tbn, 25 tbc
Sortie # 276, mpeg, vers 'video.mpg':
    Stream # 276: 0: Vidéo: aucun, yuv420p, 800x600 [SAR 1: 1 DAR 4: 3], q = 2-31, 200 kb / s, 90k tbn, 25 tbc
Cartographie de flux:
  Flux # 0: 0 -> # 0: 0 (png -> png)
  Flux # 0: 0 -> # 1: 0 (png -> png)
...
  Flux # 0: 0 -> # 274: 0 (png -> png)
  Flux # 0: 0 -> # 275: 0 (png -> png)
  Flux # 0: 0 -> # 276: 0 (png -> mpeg1video)
Erreur lors de l'ouverture de l'encodeur pour le flux de sortie # 218: 0 - peut-être des paramètres incorrects tels que bit_rate, taux, largeur ou hauteur
rhombidodécaèdre
la source
De man mencoder: mencoder "mf://*.jpg" -mf fps=25 -o output.avi -ovc lavc -lavcopts vcodec=mpeg4, similaire pour ffmpeg
Eddy_Em
1
@Eddy_Em Ce n'est pas similaire pour ffmpeg- mencodera une syntaxe complètement différente, malheureusement.
slhck
1
mencoder a fonctionné pour moi! Merci. Honnêtement, je ne me soucie pas du programme que j'utilise - juste que je reçois le film.
rhombidodécaèdre

Réponses:

23

Il s'agit de la mauvaise syntaxe pour passer plusieurs images en entrée ffmpeg. Veuillez consulter le guide Wiki FFmpeg sur la création d'un diaporama vidéo et les image2options de démultiplexage .

Vous devez lui dire d'utiliser trois chiffres pour les numéros de séquence et commencer à 84, c'est-à-dire

ffmpeg -start_number 84 -i island_sizes-CSH\(II\)-%03d.png output.mpg

Quelques autres conseils:

  • MPEG-1 en tant que codec vidéo n'est pas optimal et vous donne une mauvaise qualité à des tailles de fichier élevées. À moins que vous ne vouliez une compatibilité avec les anciens appareils ou ordinateurs (ou Windows XP sans codecs), supprimez-le et utilisez un encodeur MPEG-4 Part 10 (H.264), tel que libx264:

    ffmpeg -i … -c:v libx264 out.mp4
    

    Pour un didacticiel sur les options x264 (comment changer la qualité, etc.), consultez le guide d'encodage x264 .

  • Les fichiers PNG utilisent un format de pixels RVB, qui n'est pas pris en charge dans les codecs vidéo normaux. Avec MPEG-1, cela n'a pas d'importance, mais avec les codecs MPEG-4, cela le ferait, car ffmpegil convertirait automatiquement le format de pixel en YUV non sous-échantillonné. Dans ce cas, vous devez le traduire dans des formats sous-échantillonnés en chrominance tels que YUV 4: 2: 0, sinon votre vidéo risque de ne pas être lue dans la plupart des applications:

    ffmpeg -i … -c:v libx264 -pix_fmt yuv420p out.mp4
    
slhck
la source
Vous. Je vous aime bien.
rhombidodécaèdre