Ich versuche, die einzelnen Frames aus einem rohen AVC-Videostream zu extrahieren. Ich mache das über den folgenden ffmpeg-Befehl:ffmpeg -q 1 -i video_test.avc -f image2 frames/frames_%04d.jpg
Das Problem, auf das ich stoße, ist, dass die ersten Frames gut aussehen. Ich füge unten ein Beispiel hinzu.
Die extrahierten Frames werden dann zunehmend schlechter und bis ich zum 17. Frame komme, sind sie wirklich blockig.
Sie erhalten das Rohvideo von diesem Link .
Gibt es eine Option, die ich vermisse? Ich habe festgestellt, dass FFMPEG auf meinem Mac wie erwartet funktioniert und schöne Frames generiert, aber FFMPEG auf meinem Produktionsserver, auf dem Ubuntu ausgeführt wird, weist dieses Problem auf.
Gibt es eine Option, die ich vermisse?
Nein, aber die Platzierung von Optionen ist wichtig. Optionen vor der Eingabe gelten für die Eingabe und Optionen vor der Ausgabe gelten im Allgemeinen für die Ausgabe. Die Ausnahme sind globale Optionen. Weitere Einzelheiten zur Optionsplatzierung finden Sie in der FFmpeg-Übersicht und der FFmpeg-Beschreibung .
Daher müssen Sie Ihre Option -q
(Alias für ) verschieben:-qscale
ffmpeg -i video_test.avc -q:v 2 frames/frames_%04d.jpg
-f image2
ist hier überflüssig, da ffmpeg weiß, dass Ihre Ausgaben Bilder sind.-q:v
den Encoder mjpeg
ist 2-5; niedriger ist höhere Qualität.-q
da ffmpeg nicht wissen kann, ob es auf Video oder Audio angewendet werden soll, also verwenden Sie in Ihrem Fall -q:v
. Dies ist eine bewährte Vorgehensweise, obwohl es für Ihre Eingabe keine Rolle spielt, da Sie kein Audio haben.Ich habe festgestellt, dass FFMPEG auf meinem Mac wie erwartet funktioniert und schöne Frames generiert, aber FFMPEG auf meinem Produktionsserver, auf dem Ubuntu ausgeführt wird, weist dieses Problem auf.
Ubuntu verwendet kein FFmpeg mehr:
Da ich die Fork nicht verwende, funktioniert meine Antwort möglicherweise nicht für Sie.
Die FFmpeg-Entwicklung ist sehr aktiv und es ist immer eine gute Idee, eine aktuelle Version zu verwenden. Zwei Hauptwege, um es zu bekommen, sind:
-q 1
, die es getan hat. Danke.
A. J. Henderson
CadentOrange
A. J. Henderson
CadentOrange