Home Me Doc <Matthias Programmiert/>_

Idee

Das Format soll in der Lage sein alle möglichen Medien in einem zu vereinen, und sie effizient zu speichern. Dabei werden alle Pixel-Medien wie JPG, PNG, MP4 gespeichert und zusätzlich können Vektorgrafiken benutzt werden. Ein Medien-Objekt wird dabei wie bei einem Videoschnittsprogramm mehrere Positionen zu verschiedenen Zeiten. Und Vektorgrafiken können wie Medien-Objekte behandelt werden, oder ihre einzelnen Pfade können animiert werden.

Ein Video wird dabei in einzelne Frames unterteilt, welche jeweils den Zeitraum zwischen Szenenwechseln darstellen. Diese können dann mehrere Sekunden lang sein und sollten einzeln geladen werden, um das Video dynamisch abzuspielen.
In einem Frame können dann Bilder, Videos, Sounds und SVGs angezeigt, abgespielt und animiert werden. Alles, wird dabei erstmal als Pixel-Medium bezeichnet, und jedes Pixel-Medium kann anhand seiner Position, Größe und Sichtbarkeit animiert werden. Dabei wird automatisch die Timeline des Videos/Sonds mit der des Frames synchronisiert. Für SVGs gilt aber im besonderen, dass ihre einzelnen Pfade animiert werden können.

Umsetzung

Damit aber die Frames wiedergegeben werden können müssen noch ein paar Daten zum Encoding festgehalten werden.

  • Version (byte)
  • X, Y-Auflösung der Vektoren (byte)
  • Gesammte Laufzeit des Videos (int)
  • Maximale Länge eines Frames (byte)

  • Danach kommen dann die Zeitpunkte der Frames und die entsprechende Byte-Position wo der Frame gespeichert ist. Und als letztes die Liste mit allen Frames.

    Ein Frame ist dabei auch nicht sonderlich komplex. Er besteht einmal aus den Medien (Pixel und SVG) sowie den Animationen, welche für Medien einmal Position und Größe bedeutet und für SVGs noch zusätzlich die Path-Morphs. Diese Animationen werden dann aus Keyframes zusammen gebaut. Keyframe bedeutet hier das setzen eines Attributes zu einem bestimmten Zeitpunkt. Und die Stellen zwischen zwei Keyframes werden dann linear interpoliert animiert.

    Darstellung

    Main Format - vvf //Head |01234567| | | | | | | | |version |vec X |vec Y |playtime |F length| |times count |int count |frame times (int count integers) | |frame count |int count |frame byte pos (int count integers)| |Frames ... | //Frame |01234567| | | | | | | | |media co|Media ... | |svg coun|Media ... | |t count |int count |times (int count integers)|Animations... | |t count |int count |morphs (int count integers)|Path Morphs... | //Media |01234567| | | | | | | | | | | | | |type |data length |data as bytes (data length bytes) |visible start |visible duration | |pos X |pos Y |width |height |rotation | //Animation |01234567| | | | | | | | | | | | | |id count|int count |media ids (int count integers) | |count |int count |attributes (int count integers) | |count |int count |values (int count integers) | //Path Morph |01234567| | | | | | | | | | | | | |id count|int count |svg ids (int count integers) | |count |int count |attributes (int count integers) | |int count Shapes... | //Shape |01234567| | | | | | | | | | | | | |op count|int count |operations (int count integers) | |x count|int count |x position (int count integers) | |y count|int count |y position (int count integers) | |int count Shapes... |

    Inhalt