Un modelo de visión por computador dispone de unos 150 fotogramas por vídeo antes de agotar su presupuesto de tokens. Elegir cuáles de esos 150 conservarlo es lo que decide si el modelo vio el vídeo o solo recibió una secuencia de imágenes inconexas. Este artículo recoge las notas de ingeniería obtenidas al construir claude-real-video, una canalización local con licencia MIT.
La motivación es clara: leer un artículo sobre un evento no equivale a presenciarlo, porque el redactor ya comprimió y seleccionó lo importante. Pasar el vídeo al modelo desplaza esa compresión hacia el LLM, que puede captar detalles omitidos por cualquier reseña humana.
El muestreo uniforme por temporizador falla porque no distingue entre una persona hablando sin moverse y el segundo exacto en que ocurre algo relevante. La solución pasa por varias etapas: una primera pasada con ffmpeg basada en la puntuación de cambio de escena; un umbral adaptativo calculado respecto a la media móvil, que evita descartar animaciones o movimientos lentos de cámara; y tres canales de deduplicación que trabajan a 16×16, 32×32 y 192×192 píxeles para ignorar fotogramas casi idénticos sin perder cambios pequeños pero significativos, como un texto que aparece en pantalla. Cada canal incorpora topes y tiempos de espera para que un objeto en movimiento no acapare todo el presupuesto disponible.
El audio se extrae con Whisper local cuando no hay subtítulos incrustados. La salida son archivos planos: JPEG, transcripción con marcas de tiempo y un manifiesto que indica al modelo cómo leer el conjunto. La herramienta también se ofrece como servidor MCP instalable con pip, compatible con clientes como Claude Desktop, Claude Code o Cursor, y redimensiona los fotogramas a 768 px para no malgastar contexto. Todo el código está disponible en GitHub bajo licencia MIT y se ejecuta con un único comando.
