ffmpeg- Was ist der Unterschied zwischen „NN000/1000 fps“ und „NN000/1001 fps“?

Ich versuche, die richtigen Aufnahmeoptionen für auszuwählen, ffmpegund bin durch diese Art von Auflistung verwirrt:

[decklink @ 00000000010564c0]   17      3840x2160 at 24000/1001 fps
[decklink @ 00000000010564c0]   18      3840x2160 at 24000/1000 fps
[decklink @ 00000000010564c0]   19      3840x2160 at 25000/1000 fps
[decklink @ 00000000010564c0]   20      3840x2160 at 30000/1001 fps
[decklink @ 00000000010564c0]   21      3840x2160 at 30000/1000 fps

Aufgrund der Tatsache, dass 24 und 30 zwei Einträge haben und 25 nur einen, gehe ich davon aus, dass die beiden 24-Optionen echte 24 fps und 23,9 fps sind und die beiden 30-Optionen echte 30 fps und 29,97 fps sind.

Aber was ist was? Und warum wird diese Art der Notation verwendet?

Antworten (3)

Ja, 24000/1000hat 24 fps und 24000/1001ist 23,976 fps. Einige beziehen sich auf die X/1001-Bildraten als "Dropdown" (wie in "von der Ganzzahl heruntergefallen"), aber dies ist leicht mit "Pulldown" zu verwechseln, was sich oft auf die Kadenz von Frames bezieht, wenn 24 oder 25 fps angepasst werden Material in ein 30-fps-Programm.

Sie können sich diese Notationen auch als 24,000 divided by 1,000 equals 24und vorstellen 24,000 divided by 1,001 equals 23.976023976 repeating. Diese Notation ist auch genau dasselbe wie zu sagen 24 divided by 1 equals 24und 24 divided by 1.001 equals 23.976023976 repeating. Es ist natürlich ziemlich lächerlich, die sich wiederholenden Dezimalwerte zu artikulieren.

Die 1001Optionen und ihre resultierende Notation sind ein Vermächtnis von analogen Farbfernsehsystemen. Wie Mulvya betont, "weil dies die kleinste Menge von Zahlen ist, die den Wert als ganze Zahlen darstellen". Diese Standards gibt es auch heute noch hauptsächlich aus Gründen der Abwärtskompatibilität (mit Schwarz-Weiß-Fernsehern) und weil das Fernsehen so aufgewachsen ist. Vor dem Farbfernsehen betrug die NTSC -Bildrate genau dreißig Bilder pro Sekunde.

Die Notation 30000/1000und 30000/1001stammt vom NTSC-Videostandard. "30" fps NTSC zeigt tatsächlich 30/1.001 Bilder pro Sekunde an (manchmal kurz als "29.97" oder "30DF" bezeichnet, aber um genau zu sein 29.97002997 ... sich wiederholende Bilder pro Sekunde). Aufgrund dieses geringfügigen Unterschieds (0,01 %) verwendet NTSC entweder die Drop-Frame- (DF) oder die Non-Drop-Frame- (NDF) Timecode-Zählung. Drop-Frame „verlässt“ Frame-Zählungen in einem solchen Muster, dass die Timecode-Dauer alle zehn Minuten der tatsächlichen Wiedergabedauer entspricht. Es werden keine Bildrahmen ausgelassen, und dies war hauptsächlich eine Überlegung für Sender, die ihre Programme mit Werbeunterbrechungen ausstatten. Non-Drop-Frame hingegen stellt genauer eine Zählung der Gesamtzahl der Frames in einem Programm dar (für diejenigen, die gerne auf Basis 24:60 zählen:

25000/1000Es gibt keinen 25/1.001-fps-Standard, da 25 fps ein PAL -Standard ist und PAL-Videosysteme mit 50-Hz-Wechselstrom entwickelt wurden, die nicht die gleichen Probleme wie NTSC hatten, als Farbe aufkam .

Sie haben 50 Hz Wechselstrom erwähnt. Wollen Sie damit sagen, dass diese nicht ganzzahligen Frameraten verwendet wurden, um Interferenzen mit der Wechselstromversorgungsfrequenz zu vermeiden?
@VioletGiraffe Sowohl NTSC (29,97 fps) als auch PAL (25 fps) wurden für die Verwendung mit Wechselstromnetzen entwickelt. Die Eigenschaften des US-Standards mit AC (60 Hz) führten zur Implementierung von NTSC-Farbvideos mit 29,97 (30/1,001). Die Implementierung von PAL-Farbe mit dem europäischen AC-Standard (50 Hz) erforderte nicht die gleichen technischen Überlegungen. In diesem Blog werden einige der Überlegungen zur Geschichte/Technik für die nicht ganzzahligen Standards erläutert. 24/1.001 kam von der Anpassung des Films (24fps) an NTSC. Das Einpassen von 24-fps-Film in 25-fps-Video (PAL) ist viel einfacher
@Mr.Kennedy, die nicht ganzzahligen Bildraten sind "Drop Frame ", nicht Drop Down.
@MichaelLiebman "Drop Frame" bezieht sich speziell auf den Zeitcode, "einige" beziehen sich auf die nicht ganzzahlige Bildrate als "Drop Down" - dh das Absenken der Bildrate von der Ganzzahl, z. B. 30 Drop Down ist die Bildrate von NTSC & Drop Frame springt von 00;09;59;28 zu 00;10;00;00. Dies war in den späten 90er und frühen 00er Jahren vor der Allgegenwärtigkeit digitaler Standards ein allgemeiner Sprachgebrauch.
In meiner gesamten Fernsehkarriere, die Mitte der 90er Jahre in den USA begann, habe ich den Begriff „Dropdown“-Bildrate noch nie gehört. Ich konnte im SMPTE-Journal keinen Hinweis auf diesen Begriff finden.
@MichaelLiebman "einige" nicht "SMPTE" - ebenfalls seit 1987 professionell im Bereich Fernsehvideofilm und CG tätig. "Drop Frame" ist eine Timecode-Konvention, keine Bildrate. Wenn Sie das Problem weiter besprechen möchten, können wir ein Gespräch beginnen, da dies nichts zur Beantwortung der Frage des OP beiträgt.
"Einen 24-fps-Film in ein 25-fps-Video (PAL) einzupassen ist viel einfacher" Ich muss mich damit auseinandersetzen, dass es "einfacher" ist, Ihr Video um 4 % zu beschleunigen und alle leicht wie Streifenhörnchen klingen zu lassen.

Das sind rationale Zahlen. Also, 24000/1000 = 24.000und 24000/1001 = 23.976. Dies sind tatsächlich die genauen Darstellungen, dh 23,976 ist eine Annäherung, aber 24000 geteilt durch 1001 ist es nicht.

Warum 24000/1001und nicht 24/1.001, liegt daran, dass dies die kleinste Menge von Zahlen ist, die den Wert als ganze Zahlen darstellen . Andernfalls würde eine Fließkommavariable für den Nenner benötigt.

Sind Sie in Bezug auf Ihren letzten Absatz sicher, dass ganzzahlige Datentypen der Grund dafür sind, dass sie in Tausenden dargestellt werden? Mein Verständnis von Programmierung ist, dass, wenn Sie mit ganzzahligen Datentypen rechnen, die zu Dezimalzahlen führen, die Dezimalstellen in Ihrem Ergebnis einfach abgeschnitten werden. Wenn das stimmt, dann kann das sicherlich nicht der Grund sein, warum sie sie zu Tausenden vertreten.
Zur Ablage in Ordnern. Sie können die Variablen während des Betriebs jederzeit umwandeln.
Von ffmpeg's rational.h: " Während rationale Zahlen als Gleitkommazahlen ausgedrückt werden können, ist der Konvertierungsprozess verlustbehaftet, ebenso wie Gleitkommaoperationen. Andererseits erfordert die Natur von FFmpeg eine hochgenaue Berechnung von Zeitstempeln. " framerate ist als AVRational-Struktur gespeichert, die zwei Ganzzahlen hat - eine für den Zähler und eine für den Nenner.
@Mulvya Es tut mir leid, aber ich verstehe nicht ganz. Wie kann eine Datenstruktur verlustbehaftet sein? Du musst noch Zähler und Nenner ausrechnen. Und wenn es nur eine endliche Anzahl an Bildraten gibt, die verwendet werden, warum können sie nicht einfach aufgezählt werden?
Ich habe nichts über "eine verlustbehaftete Datenstruktur" gesagt oder zitiert. Die Genauigkeit von Fließkommazahlen ist durch den Speicherplatz begrenzt, der ihrer Speicherung gewidmet ist. Ein rationaler Repräsentant kann eine bessere Genauigkeit aufrechterhalten, da ffmpeg in Code mit Framerate-Manipulation benutzerdefinierte Routinen verwendet, die den Wert in num/den-Form halten, dh er wird nicht auf ein einzelnes Gleitkomma- oder Integer-Ergebnis reduziert.

Die ursprüngliche Framerate für Fernsehsendungen betrug in den USA 60 Halbbilder (ein halbes Frame) pro Sekunde, und das Timing basierte auf der Oszillation des Wechselstroms (also benötigte das europäische Fernsehen mit der ältesten Technologie eindeutig eine andere Framerate).

Wenn jedoch Farbe zu NTSC hinzugefügt wurde, störte das Farbsignal das Audiosignal. Zu diesem Zeitpunkt waren fortschrittlichere Timing-Mittel verfügbar, sodass die schnelle Lösung darin bestand, die Bildrate ganz leicht zu reduzieren. Die Farbe wurde in PAL etwas anders gemacht und diese Anpassung war nicht notwendig, also gibt es keine 25000/1001.