Видео и анимация в ComfyUI: как оживить картинку
Картинка училась стоять. Теперь учим её двигаться - и платим за это временем
Как сделать видео в ComfyUI простыми словами: что такое кадры, откуда движение, зачем AnimateDiff и видеомодели, и какое железо реально нужно для анимации.
Что такое видео в ComfyUI простыми словами
Помнишь блокнотик из детства? Рисуешь человечка в углу страницы, чуть смещаешь руку и ногу, листаешь быстро - и человечек бежит. Вот это и есть видео. Никакой магии: видео - это пачка картинок, которые показывают очень быстро, одну за другой.
Значит, чтобы ComfyUI выдал тебе видео, ему нужно нарисовать не одну картинку, а много. Целую пачку кадров. И тут вылезает главная засада. Попроси ИИ нарисовать «кота» десять раз - получишь десять разных котов. Пролистаешь - и вместо плавного движения у тебя дёрганый калейдоскоп из совершенно разных котов.
Так что вся задача видео в ComfyUI сводится к одному: сделать соседние кадры почти одинаковыми, чтобы менялось только то, что должно двигаться. Кот тот же самый. Шевелится только хвост.
Зачем вайбкодеру разбираться в анимации
Ты вайбкодер, а не аниматор. Но захочешь движущийся логотип, короткий ролик для сторис или просто оживить свою картинку - и сразу упрёшься в видео. Вот что спасёт тебя от разочарования:
- ты поймёшь, почему видео делается долго, и не будешь думать, что у тебя что-то сломалось;
- ты не купишь слабый компьютер в надежде гонять на нём видео и не выбросишь деньги зря;
- ты будешь просить разумного - пару секунд, а не голливудский блокбастер с первого тыка;
- ты не утонешь в названиях моделей, которые устаревают быстрее, чем ты дочитаешь урок.
Как ComfyUI делает видео из кадров
Кадры: рисуем не одну картинку, а пачку
Обычный воркфлоу Воркфлоу - схема из соединённых блоков (нод) в ComfyUI, по которой идёт генерация: загрузили модель, ввели промпт, получили картинку. в ComfyUI выдаёт одну картинку. Видео-воркфлоу выдаёт много кадров за один запуск - обычно короткий отрезок, грубо говоря пару секунд. Ты не делаешь сразу минуту. Ты делаешь маленький кусочек, а потом, если надо, удлиняешь.
Почему так? Чем больше кадров - тем больше памяти и времени. Машина держит в голове сразу всю пачку, чтобы кадры дружили между собой. Чем длиннее пачка, тем тяжелее ей это даётся.
Движение: кто учит кадры держаться друг за друга
Модель, которая рисует картинки, про время ничего не знает. Ей всё равно, что было на предыдущем кадре - она каждый раз начинает с чистого листа. Поэтому в воркфлоу добавляют отдельную «прослойку движения».
Первым популярным способом исторически стал AnimateDiff AnimateDiff - дополнение к обычной модели генерации картинок: добавляет «модуль движения», который связывает соседние кадры, чтобы получилось плавное видео, а не набор разных картинок. . Идея простая: к обычной модели картинок пристёгивают отдельный «модуль движения». Он смотрит сразу на всю пачку кадров и говорит: «эй, это всё одна сцена - держите композицию, меняйте только то, что должно двигаться».
Сегодня кроме AnimateDiff есть и современные видеомодели - их сразу обучали на видео, а не на отдельных картинках. Движение они понимают «из коробки» и дают результат заметно плавнее и стабильнее. Названия и версии меняются буквально каждый месяц, поэтому запоминай не имена, а принцип:
Text-to-video или image-to-video: с чего начать
Видео обычно делают двумя путями, и тебе полезно знать разницу:
- Из текста (text-to-video): пишешь промпт - получаешь ролик с нуля. Удобно, но контроля над тем, как именно всё будет выглядеть, меньше.
- Из картинки (image-to-video): даёшь готовую картинку - и модель её оживляет, добавляя движение. Часто проще и предсказуемее: ты уже знаешь, как выглядит первый кадр.
Интерполяция и удлинение: финальная доводка ролика
Сырой результат обычно короткий и слегка дёрганый. Тут выручают два приёма, которые ты будешь встречать постоянно:
- Интерполяция кадров Интерполяция кадров - достраивание промежуточных кадров между уже готовыми, чтобы движение стало плавнее: было 12 кадров в секунду - стало 24. - машина дорисовывает кадры между готовыми, и видео становится плавнее, будто частота кадров выросла.
- Удлинение - берём последний кадр готового отрезка и продолжаем от него новый, склеивая в более длинный ролик.
Какое железо нужно для видео в ComfyUI
А вот тут честный разговор, ради которого ты и читаешь урок. Видео - прожорливое. Очень.
- Картинку можно крутить почти на любом игровом компьютере.
- Короткий ролик «оживи мою картинку» - самый дешёвый и быстрый вход в видео.
- Можно начать на облачных сервисах, не покупая мощное железо.
- Интерполяция и удлинение позволяют из коротких кусочков собрать нормальный ролик.
- Видео хочет хорошую видеокарту - заметно больше памяти, чем для картинок.
- Ждать придётся минуты за пару секунд ролика, а не секунды.
- Чем длиннее и чётче видео - тем сильнее растут аппетиты по памяти и времени.
- На слабом железе ты упрёшься в «не хватает памяти» куда раньше, чем на картинках.
Пример: как оживить картинку для сторис
Ты сделал классную картинку - неоновый кот на фоне города - и хочешь, чтобы у него светились глаза и шевелился хвост для сторис. Минутный мультфильм тут не нужен. Нужно другое: взять готовую картинку, попросить лёгкое движение, получить пару секунд, при желании сгладить и зациклить.
Вот как разумно поставить такую задачу. Это не код, а человеческая постановка - чтобы ты не просил невозможного:
- Возьми за основу готовую картинку (image-to-video), а не генерируй ролик с нуля - так предсказуемее.
- Проси короткий отрезок - пару секунд, а не минуту. Длину нарастишь потом.
- Опиши только то, что должно двигаться: светятся глаза и слегка качается хвост. Остальное пусть остаётся неподвижным.
- Начни с небольшого размера кадра. Стало красиво - тогда повышай чёткость.
- Готовый отрезок при желании сгладь интерполяцией и зацикли для сторис.
- Закладывай минуты на ожидание - для видео это нормально.
Частые ошибки при генерации видео
- Просить сразу длинный ролик. Память кончится, а ждать будешь вечность. Делай короткие отрезки и склеивай.
- Гнаться за максимальной чёткостью с первого раза. Сначала добейся нормального движения на маленьком размере, потом повышай качество.
- Ждать секунд, как от картинки. Видео считается минутами - это не зависание, это работа.
- Описывать движение всего и сразу. Чем больше всего шевелится, тем больше каши. Двигай один-два элемента.
- Заучивать названия конкретных моделей. Через месяц выйдет новая. Держись за принцип: кадры плюс связь между ними.
- Запускать видео на слабом железе и злиться. Памяти мало - бери облако или начинай с самых лёгких коротких роликов.
TL;DR - если коротко
- Видео - это просто много картинок подряд. Вся хитрость - чтобы соседние кадры были похожи, иначе вместо движения выйдет мельтешение.
- AnimateDiff и видеомодели добавляют в генерацию «чувство движения» - учат соседние кадры держаться друг за друга.
- Генеришь короткий отрезок в пару секунд, а уже потом удлиняешь и сглаживаешь.
- Не рисуй ролик с нуля - оживи готовую картинку. Так предсказуемее.
- Видео жрёт ресурсы в разы сильнее картинок: карта помощнее, а ждать - минуты, не секунды.
- Модели меняются каждый месяц - держись за принципы, а не за названия.