# Conceitos básicos

## 1. Modelo de nível superior

O protocolo atual é:

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

Regras:
- `meta` descreve o canvas de saída
- `assets` é um pool de referência opcional
- `tracks[].clips` contém o conteúdo real da timeline

## 2. Modelo de duração

Não existe `video.duration` obrigatório no nível superior em v2.

Comportamento:
- A duração total é derivada dos clips de nível superior
- O tempo de término do projeto é o maior tempo real de término entre os clips
- `video` e `audio` podem ser encurtados por recorte da fonte

## 3. Tracks e clips

Cada track é apenas um contêiner de clips:

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

Cada clip define:
- o que ele é
- quando começa
- quanto tempo dura
- onde aparece
- como se parece

## 4. Modelo de coordenadas

Coordenadas percentuais são baseadas no centro, e não em uma origem no canto superior esquerdo no estilo DOM.

Exemplos:
- `x: "50%"` significa centro horizontal
- `y: "50%"` significa centro vertical
- `x: "0%"` significa totalmente à esquerda
- `y: "100%"` significa embaixo

## 5. Referências de assets

Quando você quiser mídia reutilizável, declare em `assets` e use `$ref`:

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

Depois referencie assim:

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

## 6. O que ler em seguida

- Quer detalhes por elemento: leia [Índice de referência de elementos](https://renderingvideo.com/docs/elements.md)
- Quer um passo a passo completo: leia [Criar showcase de produto](https://renderingvideo.com/docs/tutorials/create-product-showcase.md)
- Quer detalhes de animação: leia [Usar animações](https://renderingvideo.com/docs/tutorials/use-animations.md)