Wie kann ich feststellen, ob ein Video eine variable Bildrate hat? Ich muss das nicht programmgesteuert tun können, ich möchte nur kein Programm installieren müssen, das Hunderte von Megabyte groß ist. Wenn ich das beispielsweise mit dem VLC Media Player tun könnte, wäre das perfekt.
Antwort1
FFmpeg verfügt zu diesem Zweck über einen vfrdet-Filter.
ffmpeg -i in -vf vfrdet -an -f null -
Im Protokoll sehen Sie eine Ausgabe des Formulars,
[Parsed_vfrdet_0 @ 0000000003d8fec0] VFR:0.833333 (50/10) min: 23 max: 291)
Ein von Null abweichender Wert für VFR weist auf einen VFR-Stream hin. Der erste Wert in Klammern ist die Anzahl der Frames mit einer anderen Dauer als der erwarteten Dauer, die durch die erkannte Framerate des Streams impliziert wird. Der zweite Wert ist die Anzahl der Frames mit der erwarteten Dauer. Der VFR-Wert ist das Verhältnis der ersten Zahl zur Summe beider Zahlen.
Ein paar Vorbehalte: Ein sehr niedriger oder sehr hoher Wert weist auf einige fehlerhafte Frames mit nicht standardmäßiger Dauer hin, normalerweise das erste und/oder das letzte Frame. Diese können für die meisten Zwecke als CFR betrachtet werden. Ein Wert um 0,50 weist darauf hin, dass der Stream eine Framerate und/oder Zeitbasis hat, für die die nominelle Framedauer nicht genau in der Zeitbasis des Streams ausgedrückt werden kann, sodass die App, die die Datei generiert hat, die Dauer oszilliert hat. Wenn ein Stream beispielsweise eine Bildrate von 6 und eine Zeitbasis von 1/100 hat, wären die idealen Zeitstempel 0, 16,667, 33,334, 50,000, 66,667, 83,333, 100,000 für die erste Sekunde des Videos, aber Zeitstempel sind Ganzzahlen, sodass der Muxer 0, 16, 34, 50, 67, 83, 100 speichern kann. Dies könnte als Stream mit einem VFR-Wert von 0,5 angezeigt werden.
Antwort2
Verwenden Sie einfach ffprobe
ffprobe -v quiet -print_format json -show_streams input
Und überprüfen Sie den avg_frame_rate
Parameter des gewünschten Videostreams. Wenn der Wert dieses Parameters ein Bruch wie dieser ist
"avg_frame_rate": "1205285219/50270287"
mit einem Nenner ungleich 1, dann hat die Videodatei eine variable Bildrate.
Wenn der Wert wie folgt ist
"avg_frame_rate": "25/1"
Stellen Sie sicher, dass der Stream eine konstante Bildrate hat.
Antwort3
Man kann verwendenMedieninformation(5 MB, plattformübergreifend, portable Version für Windows verfügbar, kostenlos), um festzustellen, ob ein Video eine variable Bildrate hat: