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

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
    

Vous. Je vous aime bien.
rhombidodécaèdre
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.