Verlustfreie Aufnahme mit FFmpeg

Ich habe versucht, eine verlustfreie Spielaufnahme durchzuführen, da ich an einem Programm zur Analyse der Bildrate gearbeitet habe. Ich hatte nicht viel Glück, ein Programm zu finden, das verlustfreie Aufnahmen macht, da AmaRecTV, Dxtory und Virtualdub alle aufgegeben zu sein scheinen. Ich versuche, FFmpeg zu verwenden, und habe mir den folgenden Befehl ausgedacht:

ffmpeg -y -f dshow -rtbufsize 500M -i video="Game Capture 4K60 Pro Video 01" -framerate 60 -vsync 0 -c:v libx264 -preset ultrafast -crf 0 -pix_fmt yuv420p "e:\Captures\out.mkv"

Leider scheint die Dateigröße nicht groß genug zu sein, um verlustfrei zu sein. Beispielsweise habe ich laut MediaInfo eine Gesamtbitrate von 132 Mb/s (16,5 MB/s) für eine 720p-Aufnahme mit 60 fps erhalten. Ich bin mir jedoch ziemlich sicher, dass eine verlustfreie 720p, 60 fps, 4:2:0-Datei näher an 640 Mb/s (80 MB/s) liegen sollte.

Ich verwende Windows 10 1809 x64, einen nächtlichen Build von FFmpeg x64, der neuer als 4.0.2 ist, Nvidia 399.24 und ein Elgato 4K60 Pro.

Erzeugt dieser Befehl eine verlustfreie Erfassung? Und wie kann ich es verbessern?

Antworten (2)

libx264 ist ein sehr effizienter Encoder, sodass die Bitrate nicht ungewöhnlich ist. Tatsächlich ist es auf der höheren Seite, aber da Sie ein Spiel aufnehmen, gehe ich davon aus, dass ständige Bewegung im Spiel ist, und Ihre Voreinstellung ist ultraschnell, wodurch ein Teil der aggressiven Komprimierung deaktiviert wird.

Wenn Sie sagen 80MB/s, denken Sie glaube ich an unkomprimiertes Vollraster, dh 1280 x 720 x 12 Bit/Pixel x 60 fps. Verlustfrei bedeutet nicht unkomprimiert, genauso wie es eine komprimierte ZIP-Datei eines Binärprogramms geben kann.


Übrigens, das -framerate 60geht vor , -i video="Game Capture 4K60 Pro Video 01"da es eine Eingabemöglichkeit ist.

Der x264-Codec ist zwar recht effizient, aber wenn Sie sicherstellen möchten, dass x264 bei viel Bewegung nicht so stark komprimiert wird, können Sie use quantization parameter verwenden -qp 0. Unter den folgenden Links gibt es viele Informationen:

Ein wichtiger Teil des Artikels ist dieser:

Wenn Sie nur einfache Möglichkeiten hatten, die Qualität von Videosequenzen zu vergleichen (z. B. basierend auf einer Messung des Signal-Rausch-Verhältnisses pro Bild, PSNR), können Sie sich eine CRF-Codierung ansehen und sagen, dass sie eine geringere Qualität als die CQP hatte Variante. Aber wenn Sie ein Mensch sind, sieht die CRF-Kopie subjektiv gleich oder besser aus als die CQP-Version

Ein Benutzer auf dem obigen Stackoverflow-Link scheint jedoch zu denken, dass dies -qp 0besser für seine Spielbildschirmaufzeichnungen war. Dies könnte möglicherweise besser passen, wenn Sie eine Bildratenanalyse durchführen (dh die Komprimierung ist möglicherweise für Sie nicht wahrnehmbar, aber nicht für Ihren Bildratenanalysator).

Dies führt zu erwarteten höheren Dateigrößen.