Код вместо видеофайлов: как ИИ-агент генерирует детерминированные фильмы на Canvas

Habr AI · оригинал

Материал подготовлен автоматизированной редакционной системой. Факты можно сверить по указанному первоисточнику.

Разработчик представил метод, позволяющий ИИ-агентам создавать полноценные видеоролики с помощью чистого JavaScript и HTML без использования внешних медиафайлов. Ключевым элементом подхода является архитектура, где каждый кадр является чистой функцией времени, что обеспечивает детерминизм и возможность рендеринга в MP4 через headless-браузер.

Подход решает проблему «вкусовых» дефолтов ИИ-генерации анимаций и технических ограничений стандартных методов записи экрана, предлагая воспроизводимый и детерминированный пайплайн для создания моушн-графики.

Современные языковые модели демонстрируют высокую способность к написанию кода для графических библиотек, однако их визуальный результат часто страдает от предсказуемых шаблонов. По наблюдениям автора проекта, при отсутствии конкретных указаний ИИ-агенты склонны использовать одни и те же приемы: темный фон с неоновыми акцентами, избыточное свечение (bloom), случайные частицы и линейные движения. Кроме того, стандартная привязка анимаций к requestAnimationFrame делает невозможной честную перемотку и стабильный рендеринг в видеофайл из-за накопления состояния и зависимости от частоты кадров устройства.

Для решения этих проблем разработчик предложил архитектурный подход, при котором весь фильм представляет собой единую функцию draw(ctx, t), рисующую кадр целиком по заданному времени без памяти о предыдущих кадрах. Такая структура обеспечивает полную детерминированность: перемотка на любую секунду дает идентичный результат, а правки в коде приводят к предсказуемым изменениям в финальном видео. Звук также синтезируется кодом через Web Audio API, при этом картинка и аудиодорожка читают одну и ту же структуру данных с таймингами, что гарантирует синхронность по построению.

Техническая реализация рендеринга опирается на виртуальное время. Скрипт на основе Playwright открывает страницу в headless-режиме Chrome и последовательно вызывает функцию отрисовки для каждого кадра, сохраняя результат в PNG-файлы, которые затем собираются в MP4 через ffmpeg. Поскольку время является виртуальным, даже сложные сцены с тысячами частиц рендерятся с ровными 60 fps, независимо от времени вычислений на конкретном кадре. Для обеспечения детерминизма запрещается использование Math.random() в процессе отрисовки; вместо этого применяются генераторы псевдослучайных чисел с фиксированным сидом, а состояние частиц и других объектов вычисляется аналитически из текущего времени.

Важным аспектом метода является самопроверка результата. Поскольку ИИ-агент не может «увидеть» видео в процессе генерации, после рендеринга создается контактный лист — коллаж из кадров с интервалом в полсекунды. Мультимодальная модель анализирует эту статичную картинку, выявляя композиционные ошибки, такие как наложение текста на объекты или длительные статичные участки, и предлагает правки по конкретным таймкодам. Это позволяет заменить субъективные оценки на объективный анализ визуального ритма и композиции.

Художественные правила, заложенные в проект, направлены на отучение моделей от дефолтных решений. В брифе запрещены линейные движения без кривых ускорения, одновременный старт всех элементов и использование кроссфейда как единственного типа перехода. Вместо этого рекомендуется использовать стаггер (сдвиг по времени), смелое визуальное решение в одном месте ролика и стиль, вытекающий из темы. Переходы между сценами описываются как данные, что позволяет использовать сложные эффекты, такие как glitch или light leak, управляемые прогрессом перехода.

Проект упакован в формат Agent Skill, совместимый с Claude Code, Codex и ChatGPT, что позволяет агентам автоматически подгружать необходимые инструкции. Несмотря на эффективность метода для моушн-графики и инфографики, автор отмечает его ограничения: рендеринг через скриншоты canvas не является быстрым, а сложная персонажная анимация остается вне зоны комфорта данного подхода. Тем не менее, предложенный метод предоставляет воспроизводимый инструмент для создания высококачественных визуальных материалов с помощью кода.