# Concepts de base

## 1. Modèle de premier niveau

Le protocole actuel est :

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

Règles :
- `meta` décrit le canvas de sortie
- `assets` est un pool de références optionnel
- `tracks[].clips` contient le contenu réel de la timeline

## 2. Modèle de durée

Il n'existe pas de `video.duration` requis au niveau supérieur en v2.

Comportement :
- La durée totale est dérivée des clips de niveau supérieur
- L'heure de fin du projet est l'heure de fin réelle maximale des clips
- `video` et `audio` peuvent être raccourcis par découpe de la source

## 3. Tracks et clips

Chaque track n'est qu'un conteneur de clips :

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

Chaque clip définit :
- ce qu'il est
- quand il commence
- combien de temps il dure
- où il apparaît
- à quoi il ressemble

## 4. Modèle de coordonnées

Les coordonnées en pourcentage sont basées sur le centre, et non sur une origine en haut à gauche façon DOM.

Exemples :
- `x: "50%"` signifie centre horizontal
- `y: "50%"` signifie centre vertical
- `x: "0%"` signifie tout à gauche
- `y: "100%"` signifie en bas

## 5. Références d'assets

Lorsque vous voulez des médias réutilisables, déclarez-les dans `assets` et utilisez `$ref` :

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

Puis référencez-les ainsi :

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

## 6. À lire ensuite

- Vous voulez les détails par élément : lisez [Index de référence des éléments](https://renderingvideo.com/docs/elements.md)
- Vous voulez un parcours complet : lisez [Créer une vitrine produit](https://renderingvideo.com/docs/tutorials/create-product-showcase.md)
- Vous voulez les détails sur les animations : lisez [Utiliser les animations](https://renderingvideo.com/docs/tutorials/use-animations.md)