Verwenden Sie FFMpeg, um den mittleren Frame eines Videos zu erhalten?

8

Ich frage mich, wie man mit FFMpeg den mittleren Frame eines Videos erfassen kann. Ich habe bereits die C # geschrieben, um einen Frame zu einer bestimmten Zeit zu greifen (z. B. einen Frame bei Sekunde 3 zu ziehen). Aber ich muss noch herausfinden, wie man die Mitte des Videos mit den FFMpeg-Befehlen findet.

    
Jon Dewees 30.06.2009, 23:35
quelle

4 Antworten

9

Das könnte vereinfacht werden, aber hier ist ein alter PHP-Code, den ich herumliegen hatte, der den Trick machen sollte. (Fügen Sie den Ort zu ffmpeg hinzu, wenn er nicht in Ihrem Pfad ist)

%Vor%     
Derek Gathright 29.07.2009, 05:32
quelle
4

FFmpeg hilft Ihnen, die Framerate und die Länge des Videos zu erhalten, also können Sie eins multiplizieren und durch 2 teilen, um die Nummer des mittleren Rahmens zu erhalten.

zB für ein 30 Sekunden langes Video, das mit 15 Bildern pro Sekunde läuft: 30 * 15 = 450/2 = 225, was bedeutet, dass Sie den 225. Rahmen aufnehmen müssen.

    
Nicolas 30.06.2009 23:45
quelle
3

Beispiel

Angenommen, Sie verwenden Linux, können Sie ffprobe verwenden, um Dauer zu erhalten, bc , um einen halben Punkt zu berechnen, und ffmpeg , um den Rahmen zu erstellen:

%Vor%

Dies macht es überflüssig, awk , tr , grep , sed usw. zu verwenden.

Alternativ können Sie den Filter auswählen und bc entfernen, aber der Auswahlfilter kann sei langsam.

Eine Notiz über die Dauer

Die Dauer von ffprobe könnte falsch sein, wenn die Datei beschädigt oder nicht ordnungsgemäß abgeschnitten wurde. Die Dauer kann durch vollständiges Dekodieren der Eingabe mit ffmpeg und anschließendes Notieren der time= in der vorletzten Zeile in der Konsolenausgabe bestätigt werden:

%Vor%     
LordNeckbeard 27.01.2016 00:11
quelle
0

Dieser Bash-Befehl funktioniert wie ein Charm (getestet):

%Vor%     
quelle

Tags und Links