Timecode-Informationen zur Datei hinzufügen

Ich schreibe ein Programm, das LTC-Zeitstempel von Audiokanälen in Videodateien interpretiert. Das Ziel besteht darin, die LTC-Spur zu entfernen und sie durch eine Art nativer Zeitstempel direkt in der Videodatei zu ersetzen – auf eine Weise, die nachgeschaltete NLEs korrekt interpretieren können, z. B. für Zeitleisten mit mehreren Kameras.

Ich habe das LTC-Parsing durchgeführt, sodass ich für jeden Frame des Videos den Zeitstempel erkennen kann. Wie kodiere ich das in Containern wie .MP4 und .MOV? Am einfachsten wäre es, wenn ich es mit machen könnte ffmpeg.

Wie hoch ist die Framerate?
LTC ist auf 24 fps festgelegt; Die Videobildrate kann zwischen 23,9 und 60 liegen. Neugierig, wie sich dies auf das Problem auswirkt.
Zur Vereinfachung und um einige Annahmen über Zeitbasen zu treffen, verwende ich LTC nur, um den Timecode für das erste Videobild zu berechnen. Für jeden zweiten Frame in der Datei füge ich einfach den Offset des Frames vom Anfang der Datei zum Timecode des ersten Frames hinzu.
MP4s und MOVs speichern nur den TC des ersten Frames als wörtliche Framezahl zusammen mit der Framerate. Die nutzende App wandelt diesen Frame-Zähler mithilfe der Framerate wieder in einen TC-String um. Für Drop-Frame-TC unterstützt ffmpeg nur 30 und 60 fps. Ich werde 24/48 hinzufügen, wenn ich Zeit habe, und eine SMPTE-Referenz, die ich konsultieren kann. Für Non-Drop-TC sind alle fps in Ordnung. Fügen -timecode HH:MM:SS:FFSie Ihrem cmd hinzu. Verwenden Sie ;für das letzte Trennzeichen, wenn TC ein Drop-Frame ist.
Oh, das ist cool! In dieser Phase des Projekts ist dies ausreichend. Wenn Sie dies als Antwort angeben, würde ich es gerne akzeptieren, um die ursprüngliche Frage abzuschließen. Aber Ihre Antwort wirft weitere Fragen auf :=) 1) Ihrer Antwort entnehme ich, dass sowohl MP4 als auch MOV DF / NDF-Flag zusammen mit der Framerate speichern. 2) Ich dachte, DF gäbe es nur für 29,98 (und damit auch für 59,94). Ich habe diese Referenz für meinen LTC-Code verwendet: itu.int/dms_pubrec/itu-r/rec/br/… 3) Ihrer Antwort entnehme ich, dass Sie ein ffmpeg-Betreuer sind. An welchen Teilen arbeiten Sie?
4) Welche anderen gängigen Container werden unterstützt -timecode? 5) Beim Lesen -timecodeim Handbuch sehe ich -timestampParameter. Welche Beziehung besteht zwischen diesen? Bezieht -timestampsich auf das erste Bild oder das letzte (dh wenn die Datei fertig geschrieben ist)? Wenn diese beiden Parameter unterschiedliche Felder in eine Datei schreiben, interpretieren NLEs sie unterschiedlich?
@iter, ich würde vorschlagen, dass Sie neue Fragen für alle Fragen erstellen, die Sie in Kommentaren gestellt haben. Auf diese Weise erhalten Sie mehr Aufmerksamkeit. Kommentare sind nicht wirklich dafür gedacht, neue Fragen zu stellen oder längere Diskussionen zu führen. Wenn Sie die Diskussion fortsetzen müssen, verschieben Sie das bitte in den Chat.

Antworten (1)

@Gyan gibt die Antwort in Kommentaren:

MP4s und MOVs speichern nur den TC des ersten Frames als wörtliche Framezahl zusammen mit der Framerate. Die nutzende App wandelt diesen Frame-Zähler mithilfe der Framerate wieder in einen TC-String um. Für Drop-Frame-TC unterstützt ffmpeg nur 30 und 60 fps. Ich werde 24/48 hinzufügen, wenn ich Zeit habe, und eine SMPTE-Referenz, die ich konsultieren kann. Für Non-Drop-TC sind alle fps in Ordnung. Fügen Sie -timecode HH:MM:SS:FF zu Ihrem cmd hinzu. Verwenden ; für das letzte Trennzeichen, wenn TC ein Drop-Frame ist.