Was ist das niedrigste FPS, bei dem das menschliche Auge ein flackerndes Bild wahrnehmen kann? (testet dies mit ffmpeg)

1043
USer22999299

Ich wollte herausfinden, was das niedrigste FPS ist, das das menschliche Auge nicht als Flimmern wahrnehmen kann.

Ich habe ein weißes JPG und ein schwarzes JPG erstellt. Ich habe mit 25 fps angefangen, was bedeutet, dass ich 24 jpg Weiß und 1 Schwarz habe.

Dann habe ich diesen Befehl verwendet:

ffmpeg -r 25 -i %d.jpg -vcodec mpeg4 test.avi 

Der Film war 3 Sekunden lang (ich hatte insgesamt 75 Jpg). Ich konnte leicht das schwarze Bild sehen.

Dann wechselte ich zu 100 fps und konnte es immer noch sehen - aber nicht dreimal wie zuvor (hier hatte ich 300 JPG, 3 davon waren schwarz). Als ich auf 200 fps umgestiegen bin, konnte ich das schwarze JPG-Flimmern (I 600 JPGs) nicht sehen.

Gibt es eine untere Grenze für FPS, bei der Menschen keinen Unterschied zwischen zwei Bildern erkennen können?

Der Codec, den ich sicher verwendet habe, zeigte diese Bilder… oder gibt es eine Möglichkeit zur Komprimierung, bei der der schwarze Rahmen nicht im Film angezeigt wird? Wenn ja, welchen Codec sollte ich verwenden?

1
Hinweis an die Wähler: Diese Frage bezieht sich auf ffmpeg, also auf Computersoftware. In der Antwort wird auch angegeben, wie es technisch in Bezug auf die Hardware nicht möglich ist. slhck vor 10 Jahren 0

1 Antwort auf die Frage

6
slhck

Was Sie wollen, ist mit der Hardware, die Sie haben, grundsätzlich unmöglich. Sie können ohne Probleme ein Video mit 600 Frames pro Sekunde erstellen, das jedoch von keinem Consumer-Monitor wiedergegeben werden kann. Typische Computermonitore haben Bildwiederholfrequenzen von 60 bis 100 Hz, am besten sind 3D-fähige Monitore, die bis zu 120 Hz anzeigen können.

Was passiert also ist, dass Sie eine Interpolation des aktuellen Videos sehen, bei der nur einige der Bilder angezeigt werden.

Beachten Sie, dass Menschen bereits Einzelbilder als Bewegung mit Bildraten um 10 bis 15 Hz wahrnehmen. Bei kontrastreichen Schwarzweißbildern ist dies möglicherweise nicht so ausgeprägt, aber ein Anstieg auf 60 Hz oder mehr ist nicht erforderlich. Sobald die Dauer eines einzelnen Frames unter 13 Millisekunden liegt (was ungefähr 60 Hz entspricht), wird er nicht als solcher erkannt - und dies sollte Ihre Frage beantworten.

Um genau zu sein, möchten Sie vielleicht nicht fragen, wann das menschliche Auge das Bild wahrnimmt, sondern das visuelle System des Menschen als komplexen Apparat. Das Auge kann das Bild zwar genauso gut aufnehmen, aber das Gehirn muss sich nicht damit auseinandersetzen, da es weit über die Schwelle dessen hinausgeht, was für die Verarbeitung nützlich ist.

Wenn Sie Forschungsmaterial zu diesem Thema wünschen, empfehle ich Ihnen, etwas entlang dieser Papiere zu lesen:

  • Potter, Mary C. et al. Msgstr "Ermitteln der Bedeutung in RSVP bei 13 ms pro Bild." Aufmerksamkeit, Wahrnehmung und Psychophysik (2013): 1-10.

  • Watson, Andrew B. "Zeitliche Sensibilität". Handbook of Perception und Human Performance 1 (1986): 6-1.

  • Thompson, Peter und Leland S. Stone. "Der Kontrast beeinflusst das Flimmern und die Geschwindigkeitswahrnehmung unterschiedlich." Vision research 37,10 (1997): 1255-1260.

Wenn ich also ein Video mit 60 Hz = 30 fps erstellen möchte, sollte das menschliche Auge es jetzt erkennen? Welchen Codec sollte ich dafür verwenden? USer22999299 vor 10 Jahren 0
60 Hz bedeutet 60 Frames pro Sekunde. Das entspricht ungefähr 16ms pro Frame, also sollten Sie es theoretisch sehen können. Der Codec ist nicht so wichtig, aber wenn Sie sicher gehen wollen, verwenden Sie einen Codec, der nur für I-Frames wie MJPEG (`-vcodec mjpeg`) gilt. slhck vor 10 Jahren 0
Wie kann ich sichergehen, dass dieser progressiv ist und nicht interlace ist? in interlace 2 Felder sind 1 Frame .. USer22999299 vor 10 Jahren 0
Es wird progressiv sein, da Sie keine Interlaced-Quelle haben. Sie machen nur einzelne Bilder. slhck vor 10 Jahren 0
Vielen Dank, Sie hatten recht, benutzte mjpeg bei -r 60 und ich konnte den gespritzten Rahmen nicht bemerken. Gibt es einige Möglichkeiten, wie Sie das Video nachbearbeiten können, um sicherzustellen, dass sich der jeweilige Frame unterscheidet? (nur um mich selbst zu überprüfen) USer22999299 vor 10 Jahren 0
Jedes anständige Videobearbeitungsprogramm lässt Sie das tun. Abhängig davon, welches Betriebssystem Sie ausführen, VirtualDub funktioniert jedoch unter Windows. slhck vor 10 Jahren 0
Bei Verwendung des Befehls ffmpeg -r 60 -i% d.jpg -vcodec mjpeg test.avi hat ein Problem beim Öffnen der Datei in virtualdub. Gibt es ein anderes Programm, das diesen Codec unterstützt? dass ich den gespritzten Rahmen sehen kann? USer22999299 vor 10 Jahren 0
Jeder anständige Videoplayer sollte dies anzeigen können, z. B. VLC. Oder Sie können mit x264 verlustfrei codieren: `ffmpeg… -vcodec libx264 -crf 0 output.avi` slhck vor 10 Jahren 0
Ja, ich kann das Video mit BS-Player anzeigen. Das Problem ist, dass ich sicherstellen möchte, dass dieser "eingefügte" Frame im Ausgangsvideo vorhanden ist. Gibt es eine Software, die sie dekodieren oder Bild für Bild anzeigen kann? BTW, wo kann ich sehen, welchen Codec Codec im Glossar erklärt ich verwenden kann, der den eingefügten Frame im Film behalten und nicht komprimieren wird? USer22999299 vor 9 Jahren 0
"ffplay" kann dies, VirtualDub oder MPEG-Streamclip usw., und jeder Codec behält normalerweise alle Frames bei, sofern Sie während der Konvertierung keine andere Framerate angeben oder von progressiver zu interlaced Codierung wechseln. slhck vor 9 Jahren 0
Hier ist also das Problem, auf das ich zusteuere: Das Ausgabevideo ist 60 FPS, wenn ich es in Virtual Dub öffne, kann ich sehen, dass jedes 60. Bild, das ich bekam, anders ist. Ich habe den Film aus 120 jpeg gemacht, was bedeutet, dass ich 2 Sekunden lang das Video setzen muss. Es ist fast wie das 2-Sekunden-Video, das zeigt es in jedem Player, aber wenn ich es abspiele, spiele ich es viel länger als 2 Sekunden (niedrigere Geschwindigkeit als 60 Bilder pro Sekunde). dosierte der Spieler den Decoder über die Dateierweiterung wie avi? Wie kann ich den Player dazu zwingen, 60 fps Video anzuzeigen? USer22999299 vor 9 Jahren 0
Möglicherweise kann Ihr Player die 60 Bilder pro Sekunde nicht verarbeiten, Ihre Hardware ist zu langsam oder ähnliches. Damit komme ich zum ersten Punkt meiner Antwort zurück - ohne dedizierte Hardware oder Software wäre es unmöglich, sie zu testen. slhck vor 9 Jahren 0