2017-09-25 4 views
0

Ich versuche ein Programm zu schreiben, das PNG-Daten in FFMPEG leitet, um es in ein Video zu rendern. Die Videoausgabe des Programms funktionierte nicht, daher verwende ich PNG-Screenshots als Debug-Eingabe.FFMPEG Image2pipe Fehlerhaftes Video erstellen

Die Screenshots sind alle gültigen PNG-Dateien, die normalerweise in jedem Bildbetrachter geöffnet werden. Allerdings, wenn ich den Befehl ausführen:

cat 2017*.png | ./ffmpeg -f image2pipe -r 1 -vcodec png -i - -vcodec libx264 out.mp4 

ich einen Video-Ausgang erhalten, die mit 1 Sekunde Video für jeden Screenshot mit 2017 im Verzeichnis Start hat. Allerdings ist das Video vollständig schwarz und endet sofort nach dem Starten des Videos zu spielen. (Nicht eine Sekunde oder Rahmen für jeden Rahmen).

Dies ist auf MSYS unter Windows, mit einer Windows-Version von FFMPEG, wenn es einen Unterschied macht.

Was kann ich ändern, damit es tatsächlich ein Video aus dem Pipe-Eingang macht? Meine erste Vermutung ist, dass es etwas mit falschen Argumenten oder einem fehlenden Codec zu tun haben könnte.

Antwort

1
cat 2017*.png | ./ffmpeg -f image2pipe -framerate 1 -i - -c:v libx264 -vf format=yuv420p -r 25 out.mp4 
  • Verwenden Sie die -framerate Eingabeoption statt -r für image2pipe demuxer.

  • Viele Spieler haben Probleme mit solch niedriger Bildrate MP4. Fügen Sie die Ausgabeoption -r hinzu, um die Ausgabegeschwindigkeit zu erhöhen. ffmpeg wird Frames duplizieren, aber es sieht immer noch so aus, als wären es 1 fps.

  • Fügen Sie -vf format=yuv420p (oder den Alias ​​-pix_fmt yuv420p) hinzu, damit die Ausgabe ein weitgehend kompatibles Pixelformat verwendet.