# Conceptos básicos

## 1. Modelo de nivel superior

El protocolo actual es:

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

Reglas:
- `meta` describe el canvas de salida
- `assets` es un pool de referencias opcional
- `tracks[].clips` contiene el contenido real de la línea de tiempo

## 2. Modelo de duración

No existe un `video.duration` obligatorio en el nivel superior en v2.

Comportamiento:
- La duración total se deriva de los clips de nivel superior
- El tiempo de finalización del proyecto es el mayor tiempo real de finalización de los clips
- `video` y `audio` pueden acortarse mediante recorte de la fuente

## 3. Tracks y clips

Cada track es solo un contenedor de clips:

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

Cada clip define:
- qué es
- cuándo empieza
- cuánto dura
- dónde aparece
- cómo se ve

## 4. Modelo de coordenadas

Las coordenadas porcentuales están basadas en el centro, no en un origen superior izquierdo al estilo DOM.

Ejemplos:
- `x: "50%"` significa centro horizontal
- `y: "50%"` significa centro vertical
- `x: "0%"` significa extremo izquierdo
- `y: "100%"` significa abajo

## 5. Referencias de assets

Cuando quieras medios reutilizables, decláralos en `assets` y usa `$ref`:

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

Luego refiérete a ellos así:

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

## 6. Qué leer después

- Si quieres detalles por elemento: lee [Índice de referencia de elementos](https://renderingvideo.com/docs/elements.md)
- Si quieres un recorrido completo: lee [Crear showcase de producto](https://renderingvideo.com/docs/tutorials/create-product-showcase.md)
- Si quieres detalles sobre animaciones: lee [Usar animaciones](https://renderingvideo.com/docs/tutorials/use-animations.md)