
In meiner Anwendung kann der Benutzer zu einer bestimmten Position (media.currentPosition) navigieren und dann auf die Schaltfläche „Speichern“ klicken. Anschließend wird das Bild exportiert. Hier ist mein ffmpeg-Befehl, den ich hierfür verwende:
"-i",Video.mp4,"-filter_complex","[1:v][0:v]scale2ref=iw:ih[ovr][base];[ovr]colorchannelmixer=aa=0.7[ovrl];[base][ovrl]overlay[v]","-map","[v]","-ss",GetPositionInVideo,"-vframes","1","-q:v","2", "-preset", "ultrafast",directoryToStore+"/"+"Image.jpg"};
Da es sich um eine Android-Anwendung handelt, handelt es sich um ein Zeichenfolgenarray. Der Befehl funktioniert einwandfrei, ABER es dauert ewig, bis er ausgeführt wird.
In meinem Protokoll wird Folgendes wiederholt angezeigt:
[Progress]: frame= 0 fps=0.0 q=0.0 size=N/A time=00:00:00.00 bitrate=N/A speed= 0x
bis der Rahmen erreicht ist, dann wird folgendes angezeigt:
[Progress]: frame= 1 fps=0.0 q=2.0 Lsize=N/A time=00:00:00.04 bitrate=N/A speed=0.00151x
es ist dann sofort beendet.
Ich denke also, dass folgendes passiert: ffmpeg verarbeitet jedes Frame, bis es das gewünschte Frame erreicht, und verarbeitet es dann.
Meine Frage:
Gibt es eine Möglichkeit, die Geschwindigkeit/Verarbeitungszeit beim Exportieren eines einzelnen Frames aus einem Video in ein Bild zu erhöhen? – Vielleicht indem die unerwünschten Frames übersprungen werden und direkt zu dem Frame gesprungen wird, den der Benutzer exportieren möchte?
Antwort1
"-ss",GetPositionInVideo,
geht gleich vorher "-i",Video.mp4
zum schnellen Suchen.