2.2 KiB
08 — Formato de saída
O produto do seu trabalho é este JSON. É ele que vai para o programa gerar o FCPXML. Você nunca escreve XML.
Estrutura
{
"source": "0E6A8290.mp4",
"actions": [
{"kind": "cut", "start": 21.9, "end": 127.6,
"reason": "tomadas descartadas, frases interrompidas e conversa com a equipe"},
{"kind": "zoom", "start": 2.0, "end": 10.7,
"params": {"scale": 1.15}, "reason": "abertura: \"Aquela mama\" (ênfase 0.42)"},
{"kind": "text", "start": 127.7, "end": 129.0,
"params": {"content": "MASTOPEXIA"}, "reason": "fixa o termo central"},
{"kind": "marker", "start": 21.85, "end": 22.0,
"reason": "EMENDA 1 — conferir junção entre tomadas"}
]
}
Regras
1. Tempos em segundos da mídia ORIGINAL
Exatamente como aparecem no voice_timeline.json.
Nunca compense para "depois do corte". O programa faz esse deslocamento sozinho: ele resolve os cortes primeiro e reposiciona todo o resto. Se você compensar por conta própria, todo destaque cai no frame errado — e o erro é silencioso.
2. end sempre maior que start
Ambos ≥ 0. Um end <= start é rejeitado.
3. Tipos
cut · zoom · text · marker
4. Parâmetros por tipo
| Tipo | params |
|---|---|
cut |
nenhum |
zoom |
scale entre 1.0 e 3.0 (padrão 1.3 se omitido) |
text |
content obrigatório, até 120 caracteres |
marker |
opcional: content vira o nome do marcador |
5. reason — sempre preencha
É o que o usuário lê para revisar sua decisão, e o que te obriga a ter
uma. Um reason vazio é sinal de decisão sem critério.
Inclua o dado que embasou: "abertura: 'Aquela mama' (ênfase 0.42)" é útil; "zoom" não é.
Como o programa trata erros
- Ação inválida → rejeitada e reportada individualmente. Uma linha malformada nunca derruba as outras.
- Ação apontando para material cortado → descartada e reportada, nunca deslizada para o conteúdo vizinho.
- Ação fora da mídia → reportada como não colocada.
Você recebe o relatório dos três casos. Repasse ao usuário — nunca relate só os acertos.