FilmForge Entrega
Um filme está finalizado quando cada versão toca onde deve, mede corretamente, e toda a produção está em uma única pasta com uma prova de que nada está faltando. Este skill gera os entregáveis a partir da matriz de entregáveis, verifica cada um e encerra a produção com archive.py.
Caminhos: scripts/, templates/ e config/ abaixo são pastas dentro deste skill (o diretório base mostrado quando ele carrega), colocadas lá por ./install.sh. Trabalhando a partir de um clone do repositório, eles são tools/, templates/ e config/ na raiz.
Passo 1. A matriz de entregáveis (templates/delivery-checklist.md)
Copie-a para a produção e risque o que o filme não tem. Cada entregável do filme vem de um master, exportado do seu editor ou compositor em 3840x2160 a partir da mesma lista de planos, pinturas e mixagem da prévia, depois codificado com ffmpeg:
| Entregável | Feito a partir de | Configurações |
|---|---|---|
| Master 4K | Exportação 4K do editor | 3840x2160 no fps da lista de planos; HEVC Main via VAAPI (hevc_vaapi) com QP constante 18, marcado BT.709, depois remuxado com -c copy -tag:v hvc1 para que players Apple aceitem; sem VAAPI, H.264 (libx264, preset medium, CRF 18, yuv420p); AAC 320k; +faststart |
| 1080p para postagem | Master | Lanczos para 1920x1080, libx264 preset slow, CRF 16, perfil High, yuv420p; a mixagem normalizada para -14 LUFS e -1.5 dBTP por loudnorm linear de duas passagens; AAC 320k; +faststart |
| Cópia para celular | Cópia de postagem | Lanczos para 1280x720 com denoise leve (hqdn3d=1.2:1.2:3:3), libx264 a 900k (maxrate 1400k, buffer 2800k), AAC 128k; pequena o suficiente para enviar em um chat |
| Capas | Master | 3 ou 4 dos quadros mais fortes em 4K, PNG, mais JPG para postagem; legíveis em tamanho de celular |
Os comandos exatos do ffmpeg: references/deliverables.md. Coloque-os em um único script, para que qualquer alteração reconstrua todos os entregáveis.
Livros e extras, quando o filme os tiver: um livro ilustrado como vídeos em 4K e 1080p com a música, um PDF para impressão, um web livro interativo que vira as páginas com a música, edições localizadas (cada idioma com seus próprios vídeos em 4K, 1080p e para celular, cada linha redefinida e verificada por alguém que a lê, nunca definida por máquina sem revisão), e o making-of como PDF mais um PDF para celular. Detalhes: references/deliverables.md.
Passo 2. Verifique cada entregável
Meça os arquivos em si, nunca a linha do tempo:
- Streams: codec, tamanho, formato de pixel, taxa de quadros, tag do codec (
hvc1para o master HEVC), taxa e canais de áudio, duração, tamanho e bitrate (ffprobe). - Loudness: integrado, alcance e pico verdadeiro (EBU R128, filtro
ebur128do ffmpeg). O master carrega a mixagem como mixada; as cópias de postagem e celular devem ler cerca de -14 LUFS. - Sincronia nos hits da história: para cada hit, a maior mudança de imagem e o início de som mais forte dentro de meio segundo, e quão distantes estão em ms. Mudanças de imagem vêm do scene score do ffmpeg, inícios do
beatmap.pyexecutado no áudio do próprio filme. Alvo: um quadro (42 ms a 24 fps) ou menos onde um corte estiver no hit. Um hit sem corte relata uma lacuna; leia contra a lista de planos. - Terminais: o primeiro e o último quadro (preto, ou o título, intencionalmente).
- Folha de contato do filme finalizado, um quadro a cada 2 s, olhada de ponta a ponta.
- Assistido uma vez do início ao fim na tela alvo com som, antes da aprovação.
Os comandos para cada um: references/deliverables.md (Checagens).
Para PDFs: abra em dois leitores, verifique cada página dupla, fontes incorporadas, imagens em resolução de impressão.
Passo 3. O arquivo e sua prova
Tudo o que fez o filme vai em uma única pasta de produção: production.yaml, os arquivos da história, instruções, cada pintura e versão, as planilhas, a partitura e sua medição, o código, as mixagens, os entregáveis, as lições.
python3 scripts/archive.py build <filme> --require deliverables.txt \
--require-shotlist <filme>/shotlist.yaml --paintings <filme>/art/film \
--exclude "code/.venv/=reconstruído de requirements.txt"
python3 scripts/archive.py verify <filme>
build hasheia cada arquivo em <filme>/MANIFEST.sha256 (formato sha256sum -c simples, para que a prova sobreviva à ferramenta) e escreve manifest.json: contagem de arquivos, bytes, arquivos por tipo, o que foi deixado de fora de propósito e por que (caches, ambientes virtuais, qualquer pasta 4k/ de upscale), os entregáveis necessários e os que faltam, os planos sem pinturas, e o digest do próprio manifesto. Ele relata COMPLETO apenas quando cada padrão exigido corresponde e cada plano pintado tem sua pintura. verify re-hasheia tudo depois e falha em qualquer arquivo faltante ou alterado (e em um manifesto editado).
A mesma ferramenta prova um pacote menor também. O archive-required.txt da Lantern Moth lista o que seu pacote de pré-produção deve conter antes que um crédito seja gasto em pinturas, e archive.py build na pasta de exemplo com --require archive-required.txt encontra todos os dez padrões presentes e relata COMPLETO.
Cópias: prove um backup ou uma movimentação byte a byte: python3 scripts/archive.py compare <filme> <cópia>. Ele faz em um comando o que listas SHA-256 de cada arquivo na origem e na cópia, e um registro de cópia, fazem manualmente.
Escreva um pequeno README no arquivo: o que cada pasta contém, o que foi deixado de fora de propósito, onde está o trabalho finalizado.
Passo 4. Fechamento
production.py signoff deliver --by <você> --note "<assistiu o master na TV; checagens passam>", depois advance para a retrospectiva (forge-director).
Saída
filme/com cada entregável, nomeado<Título>_4K.mp4,<Título>_1080p.mp4,<Título>_phone.mp4,covers/- os números das checagens no relatório (tamanhos, loudness, deslocamentos de sincronia em cada hit)
MANIFEST.sha256,manifest.json, o README do arquivo
Lista de verificação
- Cada entregável da matriz existe e passou nas checagens
- Sincronia em cada hit da história dentro de um quadro
- Assistido na tela alvo com som
-
archive.py build: COMPLETO;archive.py verify: OK - Cada cópia provada com
archive.py compare - Aprovado
Tabela de reparos
| Sintoma | Correção |
|---|---|
| Dispositivos Apple recusam o master HEVC | Tag hvc1 faltando: remux com ffmpeg -i in.mp4 -c copy -tag:v hvc1 out.mp4 |
| O master HEVC não decodifica | hvc1 foi escrito durante a codificação VAAPI: codifique sem a tag, depois remuxe com -c copy -tag:v hvc1 |
| A TV engasga via Wi-Fi | Bitrate muito alto (ffprobe o imprime): codifique o master novamente com um QP maior (um arquivo menor) |
| HEVC foi desejado mas não há codificador VAAPI | ffmpeg -h encoder=hevc_vaapi e ls /dev/dri mostram o que a máquina tem; caso contrário, entregue o master H.264 |
| Plataforma de postagem recusa ou corta | Não normalizado: poste a cópia de duas passagens (-14 LUFS, -1.5 dBTP, linear), não o master |
| Cópia para celular muito grande para enviar | Recodifique-a a partir da cópia de postagem com um -b:v menor (references/deliverables.md), ou encurte; mantenha 720p |
| verify relata ALTERADO | Alguém editou um arquivo entregue: restaure-o de uma cópia provada, ou reconstrua e re-aprove |
| build relata INCOMPLETO | Um entregável necessário ou uma pintura está faltando: faça-o, ou remova-o da lista de propósito com um motivo |
Referências
references/deliverables.md: os comandos completos do ffmpeg, as checagens, livros, edições e capas