Es gibt mehrere "Standard" -Bildraten, aber es werden so viele, dass die Unterstützung beliebiger Frameraten einfacher ist als die spezifische Unterstützung vieler spezifischer. Dies gilt insbesondere für Software-Player wie VLC.
Es gibt immer mehr Unterstützung für VARIABLE fps. (VFR, variable Bildrate). Hier ist das Intervall zwischen Bildern innerhalb desselben Videos keine Konstante. Viele Videocontainer-Dateiformate (wie Matroska ( .mkv
) oder MPEG-4 ( .mp4
eng verwandt mit Apples .mov
)) speichern nicht einmal eine FPS-Nummer, sondern eine Zeitbasis (z. B. 1/30 Sekunde) und dann jedes Bild hat einen Zeitstempel als Vielfaches dieser Zeitbasis. Es ist nur so, dass das Intervall zwischen jedem Bild eine oder eine kleine ganzzahlige Anzahl von Einheiten der Zeitbasis in einem CFR-Video (konstante Bildrate) ist.
Überwachungskamera-Material mit nahezu doppelten Bildern wäre ein offensichtlicher Anwendungsfall für VFR. Auch mehr, wenn es mit einem simplen Video-Codec komprimiert wird, der die zeitliche Redundanz nicht gut ausnutzt (mit Inter- (p- und b-) Frames). (Spielen Sie mit ffmpeg -vf mpdecimate
, um Near-Dup-Frames zu löschen. Verwenden Sie -vsync 2
diese Option, wenn Sie auf mp4 ausgeben, da dies aus irgendeinem Grund nicht die Standardeinstellung für diesen Muxer ist, sondern für mkv.)
Ein weiterer Fall sind moderne Smartphones. Zum Beispiel nimmt das Moto G (2. Generation) meines Bruders VFR-Videos auf. Es senkt die Bildrate, wenn der Sensor mehr Licht benötigt. Einige der Ausgaben von Mediainfo auf einer von der Telefonsoftware erstellten MP3-Datei, die in Innenräumen aufgezeichnet wurde:
Bit rate : 9 999 Kbps
Width : 1 280 pixels
Height : 720 pixels
Display aspect ratio : 16:9
Rotation : 90°
Frame rate mode : Variable
Frame rate : 16.587 fps
Minimum frame rate : 14.985 fps
Maximum frame rate : 30.030 fps
Die Wiedergabe eines einzelnen VFR-Videostreams ist nicht schwierig. Die Software bereitet gerade das nächste Bild für die Anzeige vor, schläft, bis es angezeigt werden soll, wacht dann auf und zeigt es an.
Etwas komplizierter wird es, wenn man berücksichtigt, dass Menschen Videobilder nur sehen können, wenn sie von einem Monitor angezeigt werden. VFR-Monitore existieren, sind aber immer noch selten. (Google für G-Sync Freesync).
Das Ändern des angezeigten Bildes während des Scannens auf den Monitor führt zu einem hässlichen Zerreißen des Videos (häufig beim Spielen eines Spiels mit ausgeschaltetem vsync). Dies beschränkt einen Player darauf, das angezeigte Bild bei 50 oder 60 Hz zu ändern. (CRTs unterstützen beliebige Vrefresh-Raten innerhalb eines Bereichs, aber es ist kompliziert, Modi mit allen richtigen Timings zu erstellen, sodass die meisten Leute nur ein paar feste Refresh-Raten verwendet haben. Und jetzt haben die Leute LCDs, die sowieso nur eine feste Refresh-Rate unterstützen. Bis Freesync-Monitore sind sowieso weiter verbreitet. Ich freue mich sehr darauf. :)
Bei Videobildraten, die nicht ein Vielfaches oder ein Faktor der Monitoraktualisierungsrate sind, werden einige Bilder für 3 Monitoraktualisierungen angezeigt, andere beispielsweise für 2, selbst wenn das Video eine konstante Geschwindigkeit von 25 fps haben soll (auf einem 60Hz Monitor).
Die Dinge werden komplizierter, wenn Sie mit mehreren Clips arbeiten und zwischen ihnen oder Bild-in-Bild oder verschiedenen anderen Effekten verblassen möchten. Es ist viel einfacher, Videobearbeitungssoftware zu schreiben, wenn Sie davon ausgehen können, dass alle Clips gleichzeitig einen neuen Frame haben. (Sie erzwingen, dass die Clipausrichtung an ganzen Frames einrastet.)
Aus diesem Grund zwingen NLEs (wie kdenlive oder pitivi, um zufällige Beispiele für freie Software auszuwählen) Sie eher zu einem festen FPS und löschen / duplizieren Frames aus Ihren Clips, damit sie mit dieser Framerate übereinstimmen. Der von Ihnen gewählte CFR kann beliebig sein, muss jedoch normalerweise für das gesamte "Projekt" konstant sein.
(Funktionieren NLEs vollständig mit VFR-Clips und erzeugen in diesem Fall eine VFR-Ausgabe?)
Zusammenfassend lässt sich sagen, dass, sobald wir Monitore und Betriebssysteme mit variabler Synchronisierung haben, das einzige, was uns zurückhält, die Videobearbeitung sein wird, denke ich. Und Rundfunk, denn anscheinend ist CFR auch dafür eine große Sache?
Für den Fall, dass Sie sich fragen, sind die 29.970 (tatsächlich 30000/1001) und 23.976 (tatsächlich 24000/1001, aus der Telecining) lästigen nicht ganzzahligen Bildraten der Fehler der Farbe NTSC. Suche nach 1.001 . Wenn sie nur bereit gewesen wären, ein paar Schwarzweißgeräte zu riskieren, die nicht in der Lage sind, eine zusätzliche Frequenz von 0,1% für den Audio-Unterträger zu verarbeiten, wäre der Welt dieser Unsinn erspart geblieben. (Ich glaube, ich habe irgendwo einen anderen Artikel gesehen, in dem es eher so klang, als wären viele Sets in Ordnung gewesen, aber sie waren sich nicht sicher, ob sie perfekt kompatibel sind. Wikipedia lässt es so klingen, als hätten keine Sets einen um 0,1% höheren Audio-Unterträger handhaben können Fakten.)
Ärgerliche Bildraten sind jedoch eine der geringeren Sünden des Rundfunks. Es ist wirklich Interlacing, das auf modernen Bildschirmen (alle Pixel gleichzeitig beleuchtet) den Fluch der Videoqualität darstellt, und das hätte sich nicht geändert. Ich verstehe immer noch nicht, warum Interlacing für HDTV beibehalten wurde. Warum wurde 1080i60 jemals definiert, anstatt 720p60 zu verwenden, um die gleiche zeitliche Auflösung für Sport und andere Dinge zu erhalten? Es ist ähnlich wie 1920x540p60, aber mit einem dummen vertikalen Versatz zwischen ungeraden und geraden Feldern, der auf der Empfangsseite viel Berechnung erfordert, damit es nicht schrecklich aussieht.
bearbeiten:
Für Ihren Anwendungsfall würde ich unbedingt empfehlen, beim nativen FPS zu archivieren. Werfen Sie keine Informationen weg, indem Sie Frames ablegen. Dupen Sie keine Frames und vergrößern Sie Ihre Dateien nicht (oder lassen Sie Ihren h.264-Encoder mehr Zeit damit verbringen, die Duplikate zu bemerken und einen Frame voller Skip-Makroblöcke auszugeben, der nur 20 Bytes für den gesamten Frame benötigt).
Wenn wir hoffentlich in Zukunft alle über Freesync-Displays verfügen, die jede Framerate wiedergeben können, sollten Sie Ihr Pullup auf 24 fps rückgängig machen, damit Ihr Video reibungsloser abgespielt wird! Oder wenn sich Freesync irgendwie nicht durchsetzt oder die Anzeige nach LCDs CFR ist, ist die Ratenkonvertierung wahrscheinlich sowieso am besten zur Wiedergabezeit. Es ist nicht so, dass 24fps sogar perfekt auf einem 60-Hz-Monitor abgespielt werden. (Ich bemerke visuell nicht die Tatsache, dass einige Frames für 3 * 1/60 angezeigt werden, während andere für 2 * 1/60 angezeigt werden, aber es ist wahr).
Wenn Sie Probleme mit Quicktime haben, dann IDK. Stellen Sie möglicherweise sicher, dass Handbrake Dateien mit der richtigen Framerate im Bitstream h.264 sowie im Container erstellt. (Ja, h.264-Header können anscheinend eine Framerate speichern, die von den Angaben im Container getrennt ist. Weitere Informationen finden Sie in den Dokumenten mkvmerge --fix-bitstream-timing-information
. Versuchen Sie --default-duration 16fps
, damit eine mkv-Datei zu erstellen. Muxen Sie diese dann zurück auf mp4 und prüfen Sie, ob dadurch die Quicktime behoben wird. ) Oder vielleicht gibt es überhaupt eine Möglichkeit, dies mit mp4-Tools zu tun. Siehe zum Beispiel: /ubuntu/370692/how-to-change-the-framerate-of-a-video-without-reencoding
Ich kann garantieren, dass die beliebige Bildrate mp4 gültig ist und sogar die variable Bildrate mp4 gültig ist. Wenn Quicktime es falsch spielt, könnte es die Schuld von Quicktime sein. Oder vielleicht ist Handbrake schuld daran, dass die Datei falsch ist. Normalerweise benutze ich ffmpeg direkt, weil ich ein Kommandozeilen-Ninja bin.