Konvertieren Sie 29,970030 fps .mp4 in 29,970000

Ich arbeite an einem Webprojekt, bei dem die Position der Maus des Benutzers ein Video auslöst, das vorwärts und rückwärts abgespielt wird.

Hier ist mein Problem : Der Code, den ich verwende, um dies zu erreichen, erfordert, dass die Videodatei genau 29,97000 fps hat, aber das Exportieren meiner Arbeit aus Photoshop/Premiere gibt mir 29,970030 fps. Das erneute Codieren des Videos mit Handbrake ergab das gleiche Ergebnis. Verwenden Sie derzeit OSX 10.11.6.

Gibt es eine Möglichkeit, Adobe Suite Applications/Handbrake zu "zwingen", Videos mit genau 29,97000 fps zu exportieren, oder muss ich eine Barebone-Methode (VirtualDubMod, AviSynth, ffmpeg usw.) verwenden, um dies zu erreichen?

Jede Hilfe / Beratung wird sehr geschätzt!

Wenn Ihr Code buchstäblich 29.97 erfordert, verwenden Sie ffmpeg mit dem Argument -r 29.97.

Antworten (2)

Die Definition von "29,97" ist korrekterweise 30 * (1000 / 1001), was 29,97002997 entspricht. Das hast du. Ich weiß nicht, warum Sie glauben, dass Sie genau 29,97000 brauchen, aber es ist wahrscheinlich ein Missverständnis.

Danke fürs klarstellen! Als ich in meinem Fall die Videodatei überprüfte, die ich durch VLC ersetzen möchte, listete das Medieninformationsfeld die Bildrate als 29,970000 auf, während die Datei, die ich erstellt habe, um sie zu ersetzen, als 29,970030 angezeigt wird. Original - - Ersatz
Haben Sie eine Idee, warum die genaue Bildrate, die diese beiden Dateien melden, unterschiedlich sein würde?
@Androbaut Keine Ahnung. In vielen Fällen wird die "Bildrate" tatsächlich als Bildintervall gespeichert, der Kehrwert der Rate. Echte 29,97 könnten also als 33,36666 ... (ms pro Frame) gespeichert werden, während 29,970000 als 33,36670 gespeichert würden. Aber das erklärt nicht, wo der Fehler aufgetreten ist. Wie gesagt, vielleicht ein Missverständnis von jemandem, eine schlechte Annahme, dass "29,97" genau 29,97 bedeutet. Es könnte auch eine vorzeitige Rundung sein oder eine Zahl mit doppelter Genauigkeit als Gleitkommazahl oder ... etwas anderes.
Danke, dass Sie sich bei mir gemeldet haben! Um dies ein für alle Mal zu klären, nehmen wir an, ich habe mir zum Ziel gesetzt (so quichotisch es auch sein mag), dass die von mir gerenderte Videodatei als 29.970000 angezeigt wird, wenn sie in VLC untersucht wird (wie die andere Datei, auf die ich oben verwiesen habe) statt 29.970030. Gibt es eine Möglichkeit, das Frame-Intervall zu ändern (von 33,36666 auf 33,36670)?
@Androbaut Es hängt davon ab, welchen Codec und Container Sie verwenden. Ich sehe keine Erwähnung in Ihrem Beitrag oder Kommentar. Wenn der Container (sagen wir) MP4 ist, müssen Sie das Layout des MP4-Headers abrufen, die Felder suchen, die diesen Wert enthalten, und einen Binär-/Hex-Editor verwenden, um die Felder zu ändern. An den Videodaten sollte keine Änderung vorgenommen werden müssen. Möglicherweise sind auch Tools zum Bearbeiten des Headers verfügbar, wie MP4Box oder mp4ui.sourceforge.net oder möglicherweise avconv oder ffmpeg. Google "Video-Header Framerate ändern" für mehr.

Dies ist höchstwahrscheinlich nur ein Rundungsfehler bei der Anzeige einer Ganzzahl mit Gleitkommazahl. Selbst wenn dies nicht der Fall ist, sind 0,00003 fps alle neuneinhalb Stunden Video ein zusätzliches Bild. Wenn die Software, die diese Datei verarbeitet, damit nicht umgehen kann, sollten Sie diese Komponente ändern, nicht den Encoder.