Ich möchte ein Video mit dynamischen Metadaten streamen. Ich weiß, ich könnte das Video und die Metadaten einfach separat streamen, 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 mit Steganographie speichern, aber das ist keine ideale Lösung und ziemlich hacky.
Wenn die Bildrate nicht zu hoch ist und Sie einem Bild einen genauen Zeitstempel zuordnen können, wäre es am einfachsten, die Metadaten als Textuntertitel hinzuzufügen.
Die andere Option besteht darin, die Metadaten als Standardheader in einem .mp4
ähnlichen Containerformat zu muxen. .mp4
kann in mehrere Fragmente zerlegt werden, jedes mit seinem eigenen Header, und theoretisch kann dies pro Frame erfolgen. Wenn Sie dies jedoch für mehr als ein paar Frames tun, ist dies 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 zu setzen.
Eine weitere Option ist die Verwendung von Stenografie ohne jegliches Hacken. Sie codieren einfach die Metadaten in einen separaten Stream, der mit dem Hauptvideostream zeitstempelsynchronisiert ist. Die meisten modernen Containerformate, einschließlich .mp4
, können mehrere Videostreams im selben Container aufnehmen (z. B. können Sie den codierten Metadatenstream als denselben Inhalt, aber in einer anderen Sprache bezeichnen).
Ich bin mir nicht sicher, wie dies in eine Streaming-Strategie passt, aber das DPX-Dateiformat enthält Metadaten pro Frame (möglicherweise sehr viele davon). Dieser Wikipedia- Artikel enthält die grundlegenden Informationen.
Mir ist auch nicht klar, was Sie mit "dauerhaft gebunden" meinen. Im AVI-Dateicontainer steht das „I“ für „Interleaved“, wobei sich Video- und Audiopakete (grob) in der Datei abwechseln. Dies gilt für fast alle Containerformate. Die Streams können getrennt werden, aber sie koexistieren nativ in einem Meta-Stream.
Peter Kordes
Peter Kordes