Sitios cinematográficos|INEMA.CLUB-PRO

Clase 6 · 18 min

Fondo vivo: video generado dentro del sitio

Una película de apertura larga sale de varios clips cortos encadenados, cada uno empezando en el último cuadro real del anterior. El riesgo es un corte escondido en medio de un clip. La skill site-movimento tiene puertas de control que lo detectan. Las ejecutas en clips de ensayo, uno continuo y otro con corte, sin gastar crédito.

Comenzar la clase
Monitor ancho en una sala oscura que muestra una página cuyo fondo es un paisaje de montañas con neblina al amanecer.

En esta clase vas a

  1. 1Los siete pasos de la skill site-movimento y dónde entran las puertas de control
  2. 2El contrato de los motores (Kling, Agnes, Kie, el tuyo propio) probado sin gastar, con DRY_RUN
  3. 3Montar la película y comprobar la continuidad; detectar el corte escondido
  4. 4La puerta de texto en portugués, inglés y español

Objetivo: encadenar clips en una película continua y comprobar con las puertas de control del site-movimento que no hay corte escondido.

01Clips encadenados, sin saltos

El paso 4 de la skill (video). Haz clic en cada etapa.

Haz clic en cada bloque del diagrama para ver qué hace.

Sin motor de video, la skill hace la película en código (pasos 1, 2, 5, 6 y 7 iguales). Números del piloto: 300 créditos de Kling 3.0 en 720p, 285 cuadros en la película horizontal y 361 en la vertical (README, 18/10/2026).

02El contrato de los motores, sin gastar

Con DRY_RUN=1 cada motor solo muestra lo que haría. La prueba revisa los cuatro.

Terminal · bajar el site-movimento y probar los motores
E=${TMPDIR:-/tmp}/ensaio-sites/a6; rm -rf "$E"; mkdir -p "$E"; cd "$E"
git clone -q https://github.com/inematds/site-movimento && git -C site-movimento checkout -q d9a43a4; echo "clone: $?"
bash site-movimento/skill/site-movimento/tests/motores-contrato.sh; echo "saída: $?"
Ejemplo del repositorio
clone: 0
OK kling
OK agnes
OK kie
OK custom
4/4 motores OK
saída: 0

Ningún servicio fue llamado: el DRY_RUN sale antes de leer cualquier clave. Generar de verdad usa la cuenta y los créditos del motor que elijas; el curso no hace eso.

03Dos clips encadenados se vuelven la película del sitio

El ensayo imita el encadenamiento: el clip 2 empieza en el zoom en que terminó el clip 1.

Terminal · encadenar, montar y comprobar la continuidad
K=~/projetos/formacao-cinema-ia-sites-v72/kit
E=${TMPDIR:-/tmp}/ensaio-sites/a6; SM=$E/site-movimento/skill/site-movimento/scripts
# dois clipes encadeados: o 2º começa exatamente onde o 1º terminou (zoom 1,25)
bash "$K/scripts/clipe.sh" "$K/exemplos/lente.jpg" "$E/c1.mp4" 4 1.0 1.25
bash "$K/scripts/clipe.sh" "$K/exemplos/lente.jpg" "$E/c2.mp4" 4 1.25 1.5
python3 "$SM/cortes.py" "$E/c1.mp4" "$E/c2.mp4" | sed "s#$E/##"; echo "cortes: ${PIPESTATUS[0]}"
rm -rf "$E/site"; cp -r "$K/site" "$E/site"
python3 "$SM/montar.py" "$E/site" "$E/c1.mp4:0:-1" "$E/c2.mp4:1:-1" | head -1 | sed "s#$E/##"
python3 "$SM/continuidade.py" "$E/site/frames" | sed "s#$E/##"; echo "saída: ${PIPESTATUS[0]}"
Ejemplo del repositorio
c1.mp4: 4,0 s · 24 fps · 1920×1080
c2.mp4: 4,0 s · 24 fps · 1920×1080
c1.mp4 quadros 97, mediana 1.00, piores [(77, 0.99), (90, 0.99)] ok
c2.mp4 quadros 97, mediana 1.00, piores [(1, 0.99), (95, 0.99)] ok
cortes: 0
site: 191 quadros, 3.4 MB, cor da emenda #050605
continuidade — site/frames: 48 quadros (a cada 4), mediana 0.983
PASSA — um movimento só
saída: 0

4 s + 4 s = 191 cuadros (el cuadro 0 del clip 2 sale, para no repetir). El montar.py guarda en site/frames, la carpeta que la página del kit ya lee.

04El corte escondido

Un clip que salta de escena en medio: el lente en el estudio oscuro y, de repente, en el fondo claro.

Terminal · un clip con corte
K=~/projetos/formacao-cinema-ia-sites-v72/kit
E=${TMPDIR:-/tmp}/ensaio-sites/a6; SM=$E/site-movimento/skill/site-movimento/scripts
# um clipe com corte escondido no meio: a lente no estúdio escuro e, de repente, no fundo claro
bash "$K/scripts/clipe.sh" "$K/exemplos/lente.jpg" "$E/a.mp4" 2 1.0 1.1
bash "$K/scripts/clipe.sh" "$K/exemplos/lente-clara.jpg" "$E/b.mp4" 2 1.1 1.2
ffmpeg -v error -y -i "$E/a.mp4" -i "$E/b.mp4" -filter_complex "[0:v][1:v]concat=n=2:v=1[v]" -map "[v]" -c:v libx264 -crf 18 "$E/c3.mp4"
python3 "$SM/cortes.py" "$E/c3.mp4" | sed "s#$E/##"; echo "saída: ${PIPESTATUS[0]}"
Ejemplo del repositorio
a.mp4: 2,0 s · 24 fps · 1920×1080
b.mp4: 2,0 s · 24 fps · 1920×1080
c3.mp4 quadros 97, mediana 1.00, piores [(48, 0.46), (72, 0.99)] CORTE no(s) quadro(s) [48]
saída: 1

El par de cuadros 48 cae a 0,46 contra una mediana de 1,00: corte. Un corte entre dos cuadros oscuros y parecidos puede pasar en el cortes.py; por eso la skill también ejecuta el continuidade.py y tú miras la película.

05La cola de clips

Los clips de pago salen en orden, uno por vez. Ejecuta, interrumpe y ejecuta de nuevo: solo vuelve lo que faltó.

fila/

rodando/

pronto/

falhou/

Simulación en el navegador: no se genera nada. La falla es a propósito, para mostrar que solo vuelve el clip con corte.

06La puerta de texto en tres idiomas

Versión del site-movimento de la puerta de la clase 3: lee portugués, inglés y español.

Terminal · puerta de texto en la página del kit y en el ejemplo malo
K=~/projetos/formacao-cinema-ia-sites-v72/kit
P=${TMPDIR:-/tmp}/ensaio-sites/a6/site-movimento/skill/site-movimento/scripts/portao-texto.js
node "$P" "$K/site/index.html"; echo "saída: $?"
node "$P" "$K/exemplos/texto-ruim-pt.html" 2>&1 | head -5; echo "saída: ${PIPESTATUS[0]}"
Ejemplo del repositorio
✓ ~/projetos/formacao-cinema-ia-sites-v72/kit/site/index.html — texto limpo
saída: 0
✗ ~/projetos/formacao-cinema-ia-sites-v72/kit/exemplos/texto-ruim-pt.html — 3 defeito(s)
  manda a pessoa rolar
    …Aurora 35 Role para baixo e veja a lente de perto.…
  narra a câmera
    …e de perto. Um plano-sequência A câmera avança pelo vidro até o diafragma…
saída: 1

La puerta también reprueba el guion largo (travessão), la jerga de IA ("revolucionário"), el texto provisional y el cuadro de la película repetido como imagen justo debajo.

07Práctica

Las puertas de control de la película, sin generar nada.

E1 · Motores

5 min

Ejecuta "baixar o site-movimento e testar os motores".

Listo cuando: 4/4 motores OK y saída: 0.

E2 · Película continua

10 min

Ejecuta "encadear, montar e provar a continuidade". Después sirve la carpeta site/ del ensayo y ejecuta verificar.mjs en ella.

Listo cuando: PASSA — um movimento só con saída: 0, y el verificador responde quadros: 191 (frames/) y OK: 3 de 3 posições.

E3 · Atrapar el corte

10 min

Ejecuta "um clipe com corte". Después cambia lente-clara.jpg por lente2.jpg (otra foto oscura) y ejecuta de nuevo: anota el peor par y explica por qué pasó.

Listo cuando: Con la lente clara: CORTE no(s) quadro(s) [48] y saída: 1.

E4 · Tu texto

10 min

Ejecuta la puerta de texto en la página que estás haciendo.

Listo cuando: texto limpo y saída: 0.

08Prueba de la clase

La explicación aparece después de tu respuesta.

Pregunta 1 de 4

¿Desde dónde debe empezar el clip 2?

09En tres frases

EncadenarEl clip N empieza en el último cuadro real del anterior, en orden.
Puertas de controlfijación, cortes, continuidad; el corte nunca entra.
Sin gastoDRY_RUN y los clips de ensayo prueban el camino antes del generador.

Para ir más allá

Clase anteriorPróxima clase