Gibt es ein vorhandenes Videoformat, das Metadaten pro Frame aufzeichnet?


7

Ich möchte ein Video mit dynamischen Metadaten streamen. Ich weiß, dass ich das Video und die Metadaten einfach separat dämpfen kann, aber im Idealfall möchte ich, dass sie dauerhaft gebunden sind.

Gibt es ein vorhandenes Protokoll / Codierung / Format, das dies tut? Ich könnte die Daten in jedem Frame mithilfe der Steganografie speichern, aber dies ist keine ideale Lösung und ziemlich hackig.

Antworten:


4

Wenn die Bildrate nicht zu hoch ist und Sie einem Bild einen genauen Zeitstempel zuordnen können, ist es am einfachsten, die Metadaten als Textuntertitel hinzuzufügen.

Die andere Möglichkeit besteht darin, die Metadaten als Standardheader in einem .mp4ähnlichen Containerformat zu muxen. .mp4kann in mehrere Fragmente zerlegt werden, jedes mit einem eigenen Header, und theoretisch kann dies pro Frame erfolgen. Dies für mehr als ein paar Frames zu tun, ist jedoch in Bezug auf Dateigröße und Leistung äußerst ineffizient. Eine Variation dieser Methode wäre, jeden Frame als Bild (z. B. JEPG) zu extrahieren und seine Metadaten festzulegen.

Eine weitere Option ist die Verwendung der Stenografie ohne Hacking. Sie codieren die Metadaten einfach in einen separaten Stream, der mit dem Hauptvideostream zeitstempelsynchronisiert ist. Die meisten modernen Containerformate, einschließlich .mp4, können mehrere Videostreams in demselben Container aufnehmen (z. B. können Sie den codierten Metadatenstrom als denselben Inhalt, jedoch in einer anderen Sprache kennzeichnen).


Auch an Untertitel-Streams habe ich gedacht. Stellen Sie sicher, dass Sie es als nicht standardmäßig kennzeichnen, oder fügen Sie einen leeren Untertitel-Stream als ersten Sub-Stream hinzu, damit Spieler, die Ihr benutzerdefiniertes Sub-Format nicht kennen, es nicht als Text anzeigen.
Peter Cordes

ffmpeg unterscheidet zwischen Untertiteln und anderen Datenströmen. Zum Beispiel gibt es in einigen Videodateien Dinge wie RTP-Metadaten, und es ist ein separater Metadaten-Stream im mp4-Container. Je nachdem, was Sie benötigen, können Sie möglicherweise nur einen benutzerdefinierten Datenstrom verwenden, der in mp4 oder mkv gemuxt ist.
Peter Cordes

2

Ich bin mir nicht sicher, wie dies in eine Streaming-Strategie passt, aber das DPX-Dateiformat enthält Metadaten pro Frame (möglicherweise viel davon). Dieser Wikipedia- Artikel enthält die grundlegenden Informationen.

Mir ist auch nicht klar, was Sie unter "dauerhaft gebunden" verstehen. Im AVI-Dateicontainer steht das "I" für "Interleaved", wobei sich Video- und Audiopakete (ungefähr) in der Datei abwechseln. Dies gilt für fast alle Containerformate. Die Streams können getrennt werden, aber sie existieren nativ in einem Meta-Stream nebeneinander.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.