ffmpeg Pipe-Bilder aus Video extrahiert

8

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?

Birjolaxew
quelle
Versuchen Sie-f png - | ...
Gyan
@ Mulvya Dies führt zu Fehlern mit [NULL @ 0x10e2860] Requested output format 'png' is not a suitable output format pipe:: Invalid argument.
Birjolaxew
2
Versuchen Sie es -f image2pipe -vcodec png - | .... PNG funktioniert möglicherweise nicht. In diesem Fall wird MJPEG nach dem Entfernen von vcodec ausgegeben.
Gyan
@ Mulvya Das hat in der Tat funktioniert. Vielen Dank :)
Birjolaxew

Antworten:

7

ja da ist!

-f image2pipeFügen Sie das Argument hinzu und geben Sie den Ausgabedateinamen als einzelnen Hypen an ( -in diesem Zusammenhang bedeutet dies stdout). Geben Sie den Eingabedateinamen auch als einzelnen Hypen an ( -i -in diesem Zusammenhang bedeutet dies stdin) und geben Sie das Ausgabeformat explizit an (z. B. für png) :) -c:v png, hier ist ein vollständiges Beispiel:

ffmpeg -i - -ss 00:00:3 -s 650x390 -vframes 1 -c:v png -f image2pipe -
hanshenrik
quelle