Mit dem folgenden Befehl kann ich mit ffmpeg Bilder aus einem Video extrahieren und im Dateisystem speichern:
... | ffmpeg -i - -f image2 'img-%03d.png'
Ich möchte diese Bilder an eine andere Anwendung weiterleiten, anstatt sie im Dateisystem zu speichern. Wie sie in der Pipe getrennt sind, ist von geringer Bedeutung, da es sich um ein NodeJS-Skript handelt, das ich selbst steuere.
Folgendes funktioniert nicht:
... | ffmpeg -i - -f image2 pipe: | ...
Fehler mit
[image2 @ 0xe1cfc0] Could not get frame filename number 2 from pattern 'pipe:' (either set updatefirst or use a pattern like %03d within the filename pattern)
av_interleaved_write_frame(): Invalid argument
Gibt es eine Möglichkeit, mit ffmpeg aus einem Video extrahierte Bilder ohne Verwendung des Dateisystems weiterzuleiten?
-f png - | ...
[NULL @ 0x10e2860] Requested output format 'png' is not a suitable output format pipe:: Invalid argument
.-f image2pipe -vcodec png - | ...
. PNG funktioniert möglicherweise nicht. In diesem Fall wird MJPEG nach dem Entfernen von vcodec ausgegeben.Antworten:
ja da ist!
-f image2pipe
Fügen Sie das Argument hinzu und geben Sie den Ausgabedateinamen als einzelnen Hypen an (-
in diesem Zusammenhang bedeutet diesstdout
). Geben Sie den Eingabedateinamen auch als einzelnen Hypen an (-i -
in diesem Zusammenhang bedeutet diesstdin
) und geben Sie das Ausgabeformat explizit an (z. B. für png) :)-c:v png
, hier ist ein vollständiges Beispiel:quelle