it-swarm.com.de

Wie erstelle ich ein Video aus Bildern mit FFmpeg?

ffmpeg -r 1/5 -start_number 2 -i img%03d.png -c:v libx264 -r 30 -pix_fmt yuv420p out.mp4

Diese Zeile hat gut funktioniert, aber ich möchte eine Videodatei aus Bildern in einem anderen Ordner erstellen. Bildnamen in meinem Ordner sind:

img001.jpg
img002.jpg
img003.jpg
...

Wie kann ich Bilddateien aus einem anderen Ordner eingeben? Beispiel: C:\mypics

Ich habe diesen Befehl ausprobiert, aber ffmpeg hat nur mit dem ersten Bild (img001.jpg) ein Video generiert.

ffmpeg -r 1/5 -start_number 0 -i C:\myimages\img%03d.png -c:v libx264 -r 30 -pix_fmt yuv420p out.mp4
115
user3877422

Siehe Erstellen einer Video-Diashow aus Bildern - FFmpeg

Wenn in Ihrem Video die Bilder nicht richtig angezeigt werden Wenn Sie auf Probleme stoßen, z. B. wenn das erste Bild übersprungen wird oder nur für ein Bild angezeigt wird, verwenden Sie die Option fps Videofilter anstelle von - r für die Ausgangsbildrate

ffmpeg -r 1/5 -i img%03d.png -c:v libx264 -vf fps=25 -pix_fmt yuv420p out.mp4

Alternativ kann der Format-Videofilter zur Filterkette hinzugefügt werden, um - pix_fmt yuv420p wie "fps = 25, format = yuv420p ". Der Vorteil dieser Methode ist, dass Sie steuern können, welcher Filter zuerst aktiviert wird

ffmpeg -r 1/5 -i img%03d.png -c:v libx264 -vf "fps=25,format=yuv420p" out.mp4

Ich habe folgende Parameter getestet, es hat bei mir funktioniert

"e:\ffmpeg\ffmpeg.exe" -r 1/5 -start_number 0 -i "E:\images\01\padlock%3d.png" -c:v libx264 -vf "fps=25,format=yuv420p" e:\out.mp4

unter den Parametern hat auch funktioniert, aber es wird immer das erste Bild übersprungen

"e:\ffmpeg\ffmpeg.exe" -r 1/5 -start_number 0 -i "E:\images\01\padlock%3d.png" -c:v libx264 -r 30 -pix_fmt yuv420p e:\out.mp4

Erstellen eines Videos aus Bildern in verschiedenen Ordnern

Fügen Sie zunächst Bildpfade zu imagepaths.txt hinzu (siehe unten).

# this is a comment details https://trac.ffmpeg.org/wiki/Concatenate

file 'E:\images\png\images__%3d.jpg'
file 'E:\images\jpg\images__%3d.jpg'

Beispielgebrauch wie folgt;

"h:\ffmpeg\ffmpeg.exe" -y -r 1/5 -f concat -safe 0 -i "E:\images\imagepaths.txt" -c:v libx264 -vf "fps=25,format=yuv420p" "e:\out.mp4"

- sicherer 0 Parameter verhindert unsicheren Dateinamen Fehler

Weiterführende Links

FFmpeg macht ein Video aus Bildern in verschiedenen Ordnern

FFMPEG Eine Zwischenanleitung/Bildsequenz

Verketten - FFmpeg

118
khan

-pattern_type glob

Diese großartige Option erleichtert in vielen Fällen die Auswahl der Bilder.

Diashow-Video mit einem Bild pro Sekunde

ffmpeg -framerate 1 -pattern_type glob -i '*.png' \
  -c:v libx264 -r 30 -pix_fmt yuv420p out.mp4

Fügen Sie etwas Musik hinzu und unterbrechen Sie die Audiowiedergabe, wenn die Bilder enden:

ffmpeg -framerate 1 -pattern_type glob -i '*.png' -i audio.ogg \
  -c:a copy -shortest -c:v libx264 -r 30 -pix_fmt yuv420p out.mp4

Hier sind zwei Demos auf YouTube:

Sei ein Hippie und nutze das von Theora patentfreie Videoformat :

ffmpeg -framerate 1 -pattern_type glob -i '*.png' -i audio.ogg \
  -c:a copy -shortest -c:v libtheora -r 30 -pix_fmt yuv420p out.ogg

Ihre Bilder sollten natürlich alphabetisch sortiert sein, normalerweise wie folgt:

0001-first-thing.jpg
0002-second-thing.jpg
0003-and-third.jpg

und so weiter.

Siehe auch: http://unix.stackexchange.com/questions/68770/converting-png-frames-to-video-at-1-fps/339399#339399

Normalgeschwindigkeitsvideo mit einem Bild pro Bild bei 30 FPS

ffmpeg -framerate 30 -pattern_type glob -i '*.png' \
  -c:v libx264 -pix_fmt yuv420p out.mp4

So sieht es aus:

GIF generiert mit: https://askubuntu.com/questions/648603/how-to-create-an-animated-gif-from-mp4-video-via-command-line/837574#837574

Fügen Sie etwas Audio hinzu:

ffmpeg -framerate 30 -pattern_type glob -i '*.png' \
  -i audio.ogg -c:a copy -shortest -c:v libx264 -pix_fmt yuv420p out.mp4

Ergebnis: https://www.youtube.com/watch?v=HG7c7lldhM4

Konvertiere eine Musikdatei in ein Video mit einem festen Bild für den YouTube-Upload

Beantwortet unter: https://superuser.com/questions/700419/how-to-convert-mp3-to-youtube-allowed-video-format/1472572#1472572

Erhalten Sie einige synthetische Testeingabebilder

Dies sind die Testbilder, die ich in dieser Antwort verwendet habe:

wget -O opengl-rotating-triangle.Zip https://github.com/cirosantilli/media/blob/master/opengl-rotating-triangle.zip?raw=true
unzip opengl-rotating-triangle.Zip
cd opengl-rotating-triangle
wget -O audio.ogg https://upload.wikimedia.org/wikipedia/commons/7/74/Alnitaque_%26_Moon_Shot_-_EURO_%28Extended_Mix%29.ogg

Bilder generiert mit: Wie wird GLUT/OpenGL zum Rendern einer Datei verwendet?

Es ist cool zu beobachten, wie sehr das Video die Bildsequenz besser komprimiert als Zip, da es mit speziellen Algorithmen über Frames hinweg komprimieren kann:

  • opengl-rotating-triangle.mp4: 340 KB
  • opengl-rotating-triangle.Zip: 7,3 Millionen

Über die CLI-Optionen

Beachten Sie jedoch, dass dies trotz des Namens -glob Nicht so allgemein ist wie Shell Glob-Muster, z. B .: -i '*' Schlägt fehl: https://trac.ffmpeg.org/ ticket/3620 (anscheinend, weil der Dateityp von der Erweiterung abgeleitet ist).

-r 30 Bewirkt, dass das -framerate 1 - Video mit 30 FPS Bugs in Playern wie VLC für niedrige Frameraten überwindet: VLC friert für Videos mit niedrigen 1 FPS ein, die aus Bildern mit ffmpeg erstellt wurden Daher wird jedes Bild 30 Mal wiederholt, um den gewünschten Effekt von 1 Bild pro Sekunde zu erzielen.

Nächste Schritte

Sie möchten auch:

TODO: Lernen Sie, mehrere Audiodateien ohne Zwischendateien zu schneiden und zu verknüpfen. Ich bin mir ziemlich sicher, dass dies möglich ist:

Getestet am

ffmpeg 3.4.4, vlc 3.0.3, Ubuntu 18.04.

Bibliographie

Einfache Version von the Docs

Funktioniert besonders gut für Google Earth Studio Bilder:

ffmpeg -framerate 24 -i Project%03d.png Project.mp4
14
Joshua Pinter

cat *.png | ffmpeg -f image2pipe -i - output.mp4

von wiki

2
Hunger