# Grundkonzepte

## 1. Modell auf oberster Ebene

Das aktuelle Protokoll ist:

```json
{
  "meta": {},
  "assets": {},
  "tracks": []
}
```

Regeln:
- `meta` beschreibt die Ausgabe-Zeichenfläche
- `assets` ist ein optionaler Referenz-Pool
- `tracks[].clips` enthält den eigentlichen Timeline-Inhalt

## 2. Dauermodell

In v2 gibt es kein erforderliches Top-Level-`video.duration`.

Verhalten:
- Die Gesamtdauer wird aus den Clips auf oberster Ebene abgeleitet
- Die Projektendzeit ist die maximale tatsächliche Endzeit eines Clips
- `video` und `audio` können durch Source-Trimming verkürzt werden

## 3. Tracks und Clips

Jeder Track ist nur ein Clip-Container:

```json
{
  "id": "main",
  "clips": [
    {
      "type": "text",
      "start": 0,
      "duration": 3
    }
  ]
}
```

Jeder Clip definiert:
- was er ist
- wann er startet
- wie lange er dauert
- wo er erscheint
- wie er aussieht

## 4. Koordinatenmodell

Prozentuale Koordinaten basieren auf der Mitte, nicht auf einem DOM-ähnlichen Ursprung links oben.

Beispiele:
- `x: "50%"` bedeutet horizontale Mitte
- `y: "50%"` bedeutet vertikale Mitte
- `x: "0%"` bedeutet ganz links
- `y: "100%"` bedeutet unten

## 5. Asset-Referenzen

Wenn du wiederverwendbare Medien willst, deklariere sie in `assets` und verwende `$ref`:

```json
{
  "assets": {
    "images": [
      {
        "id": "cover",
        "src": "https://example.com/cover.jpg"
      }
    ]
  }
}
```

Dann referenzierst du sie so:

```json
{
  "type": "image",
  "start": 0,
  "duration": 5,
  "src": { "$ref": "cover" }
}
```

## 6. Was du als Nächstes lesen solltest

- Du willst Details pro Element: lies [Elementreferenzindex](https://renderingvideo.com/docs/elements.md)
- Du willst einen vollständigen Durchlauf: lies [Produkt-Showcase erstellen](https://renderingvideo.com/docs/tutorials/create-product-showcase.md)
- Du willst Details zu Animationen: lies [Animationen verwenden](https://renderingvideo.com/docs/tutorials/use-animations.md)