Создаем GIF-анимации с прозрачностью для BTTV и Twitch – Mikulski
Наложение сайта

Создаем GIF-анимации с прозрачностью для BTTV и Twitch

Предисловие

В этой статья я наглядно расскажу о своем опыте создания анимационных смайликов для расширения BTTV и о тех проблемах, с которыми я столкнулся, а также поделюсь максимально оптимизированной последовательностью действий.
Не один вечер у меня ушел на поиск нужных инструментов, а также на осознание, что мне все это время мешал один неприятный баг видеоредактора из-за которого я не мог добиться нужного результата. Не факт, что вы столкнетесь с тем же самым глитчем (возможно, причина в конкретной конфигурации моего ПК), да и возможно, что вы воспользуетесь другими, более совершенными приложениями. Я же, по традиции, буду использовать только бесплатные программы и сервисы (OBS, видеоредактор kdenlive и сайт EZGIF).

Шаг 1. Готовим видеосъемку в OBS

Итак, первым делом в верхней панели находим «Коллекцию сцен» и создаем новую.

Следом щелкаем в верхней панели «Профиль» и тоже создаем новый (убираем галочку с чекбокса авто-настройщика, если есть).

Идем в «Настройки».

В настройках переходим на вкладку «Видео» и в «Основу разрешения» ставим любые удобные значения, но с «квадратным» соотношением 1:1 (напр. 500 x 500), выходное разрешение можно продублировать из «Основы», а можно сразу сделать 112×112 (размер смайлика в BTTV). В любом случае, на последующих двух этапах можно будет пересмаштабировать изображение в необходимые значения. Главное, чтобы картинка была квадратной. Остальные значения не трогаем.

Идем на вкладку «Вывод» и в подразделе «Запись» указываем путь сохранения видео и формат mp4 (или любой другой, который поддерживает ваш видеоредактор). Нажимаем «Применить» и идем на нашу пустую сцену.

Добавляем наш источник захвата видео (напр. веб-камеру) и в его настройках вручную выставляем его разрешение (в моем случае 1920×1080), а затем выравниваем по горизонтали наш источник. В целом, здесь нет конкретных рекомендаций и для каждого конкретного случая, следует подбирать такие разрешения видео в профиле и настройках камеры, которые обеспечат правильный кадр для съемки.

Вот что получилось у меня:

Я думаю понятно, что для прозрачного фона необходим (желательно) зеленый или синий фон, чтобы можно было его вырезать.
В OBS встроен очень хороший фильтр для Хромакея, который по удобству и точности обходит многие аналогичные инструменты видеоредакторов. Но, к сожалению, OBS не поддерживает запись с прозрачностью (хотя, возможно, есть умельцы, которые написали скрипт для таких целей). Поэтому мы сделаем так: наложим фильтра хромакея, настроим под наш фон и затем подложим в сцену слой с заливкой экрана классическим зеленым цветом, который любой видеоредактор без проблем сможет распознать.
Щелкаем правой клавишей на источнике захвата видео, выбираем «фильтры» и разделе «Эффекты» добавляем хромакей и мучаемся с настройками.

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

Теперь жмем «Начать запись» и качественно кривляемся в кадре для будущего анимированного смайлика.
Технически, OBS нам больше не понадобится и если мы уверены в записанном, можно его закрыть.

*Еще одно отступление

Технически имея видеоролик со статичным фоном, можно перейти на сервис EZGIF, загрузить туда видео и с помощью соответствующих инструментов заменить наш зеленый цвет на прозрачность. Проблема в том, что с «выборочными» цветами он работает не очень хорошо. Поэтому, прежде чем идти на этот сайт, нам нужно будет еще немного поковыряться в видеоредакторе. Поэтому сперва разберемся с видеоредактором, а потом вернемся к EZGIF и рассмотрим все нюансы. В целом, я рекомендую приступить сразу к шагу 3 и если таким способом не получится добиться хорошего результата, то вернуться ко шагу 2.

Шаг 2. Делаем Mov файл с прозрачностью

Я буду использовать бесплатную и не требующую регистрации программу kdenlive https://kdenlive.org/en/. Она простая, удобная, но и не лишена недостатков и багов (я упомяну те моменты, с которыми столкнулся я, но возможно, что у вас будет все работать исправно).
Если вы пользуетесь другим видеоредактором, то вам необходимо самостоятельно изучить каким образом можно назначить прозрачность для видео (обычно это форматы mov и webm).
Запускаем программу и закидываем в Project Bin наш отснятый в OBS ролик. Когда программа спросит настроить ли проект под наше видео — соглашаемся, чтобы наш проект был в том же разрешении, что и наше видео.

Если в Project Bin файл отображается серой иконкой, то необходимо повторно его закинуть.

Выносим видео на таймлайн, если нужно подрезаем его (в EZGIF, если что тоже можно будет удалить лишние кадры, но в видеоредакторе это все же попроще) и выделяем зону нашего видео с помощью спец.клавиш на таймлайне (после выделения можно в контекстном меню кнопки Play выбрать режим Loop Zone, чтобы зациклить воспроизведение).

В верхнем меню View ставим чекбоксы в Effects и Properties (если, конечно, чекбоксы отсутствуют) и в появившемся в интерфейсе меню Effects, нажимаем на лупу и вбиваем Chroma-key. В kdenlive два эффекта для хромакея и отличаются они количеством настроек. Берем самый первый, который попроще. Просто зажимаем левую клавишу мыши и иконку с эффектом закидываем в наше видео на таймлайне.
Щелкаем на наше видео на таймлайне. В разделе Properties должна появиться настройка для Хромакея:

В Color key устанавливаем наш зеленый цвет, а параметр Variance уменьшаем до тех значений, при которых зеленый фон не будет виден, а видимое изображение не будет иметь искажений.
Когда все будет готово, убеждаемся, что наш ролик выделен границами на таймлайне и жмем кнопку Render наверху экрана.
В появившемся окне указываем путь для сохранения, формат выбираем Transparent, ставим чекбокс в selected zone, а так же в More options, если нужно перемасштабировать видео — пункт rescale. И жмем Render to File.

В чем, собственно, заключается баг, который имел место у меня быть: прозрачность правильно присваивалась только для первого файла оказавшегося на таймлане. То есть, сделав рендер первого видео, и я решаю внести какие-то изменения или следом сделать другой фрагмент, то после повторного рендера — прозрачность не присваивается файлу! Решается это закрытием kdenlive, снятием процесса в Диспетчере задач (да, у меня частенько процесс kdenlive остается болтаться в диспетчере задач, после закрытия) и повторного запуска. Неудобно, но работает.
Теперь открываем https://ezgif.com/, переходим в раздел Video to GIF, загружаем наш mov файл и в меню Method выбираем Preserve Transparency. Жмем Convert to GIF. Далее, если нужно делаем дополнительные обработки (напр. Масштабирование Resize, если не сделали это на предыдущих этапах).
После всех нужных манипуляций остается только нажать Save и сохранить нашу анимацию и загрузить в BetterTTV.

Шаг 3. EZGIF

Теперь рассмотрим вариант без видеоредактора. Открываем сайт https://ezgif.com/ и переходим на вкладку Video to GIF.

Загружаем наше видео, которое мы сняли в OBS.

Поставьте чекбокс в Optimize for static background и нажмите Convert to GIF.

Выбираем раздел Effects.

Здесь, прежде чем воспользоваться вкладкой Replace color with transparency (что было бы логично, но таким образом эффекта либо не происходит, либо же выходит очень «грязно»), во вкладке Color Presets надо поставить чекбокс в change background color и назначить Original Color и New Color один и тот же цвет (тот самый, который мы заливали на фон в OBS). Чекбокс Transparent Background оставляем пустым. Внизу экрана нажимаем Apply Selected.

Внизу появится наше обработанное изображение. Снова жмем Effects и теперь пользуемся вкладкой Replace color with transparency. Ставим чекбокс custom (HEX) и вставляем туда код нашего цвета. Также нужен чекбокс don’t stack frames.ox.

Опять жмем Apply Selected и любуемся результатами.

Получилось неплохо, но все же остались артефакты. Можно попробовать воспользоваться вкладкой Optimize, выбрать там Optimize Transparency и с помощью параметра Fuzz попытаться улучшить картинку. Хотя, как правило, это не спасает.

Остальные инструменты позволяют всячески редактировать нашу анимацию: обрезать, масштабировать, поворачивать, реверсировать, изменить скорость, экспортировать отдельными кадрами, удалять или дублировать кадры внутри анимации, написать текст, наложить оверлей и так далее. Очень много всего полезного и интересного в одном месте.

Заключение

Что ж, материал снова получился весьма объемным, несмотря на то что все это технически просто, особенно, если обойти мимо видеоредактор. Но я старался описать все подробно, чтобы даже те, кто имеет минимальную подготовку смог справиться.

0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии