yt-shortmaker

Формат JSON шаблонов (Plano) для YT ShortMaker

“Planos” - это JSON-файлы, определяющие визуальную структуру ваших Shorts. Они позволяют размещать оригинальное видео, добавлять наложения, эффекты и анимированные фоны.

Базовая структура

Шаблон представляет собой массив (список) объектов. Порядок важен: первые объекты отрисовываются на заднем плане, последние - на переднем (слои).

[
  { "type": "shader", ... }, // Фон (Слой 0)
  { "type": "clip", ... },   // Середина (Слой 1)
  { "type": "image", ... }   // Передний план (Слой 2)
]

Общие свойства: Позиция и Размер

Почти все объекты имеют свойство position с полями x, y, width и height.

Значения могут быть:

"position": {
  "x": "center",
  "y": 0,
  "width": "100%",
  "height": "50%"
}

Типы объектов

1. Клип (clip)

Представляет исходное видео, которое вы обрабатываете. Можно использовать несколько раз.

2. Изображение (image)

Накладывает статичное изображение (png, jpg). Идеально для рамок, логотипов или водяных знаков.

3. Видео (video)

Фоновое или наложенное видео (например, геймплей на фоне, эффекты частиц).

4. Шейдер (shader)

Применяет визуальный эффект к тому, что находится позади. В настоящее время поддерживает размытие (blur).

Полный пример

[
  // 1. Размытый фон (Растянутое исходное видео + Размытие)
  {
    "type": "clip",
    "position": { "x": 0, "y": 0, "width": "full", "height": "full" },
    "comment": "Базовый размытый фон"
  },
  {
    "type": "shader",
    "effect": { "type": "blur", "intensity": 30 },
    "position": { "x": 0, "y": 0, "width": "full", "height": "full" }
  },

  // 2. Основное видео по центру
  {
    "type": "clip",
    "position": { "x": "center", "y": "center", "width": "100%", "height": "auto" }
  },

  // 3. Водяной знак
  {
    "type": "image",
    "path": "./logo.png",
    "position": { "x": "center", "y": 1700, "width": 200, "height": "auto" },
    "opacity": 0.8
  }
]

Частые случаи использования и примеры

Вот несколько практических примеров. Скопируйте и вставьте JSON-код в ваш файл шаблона .json.

1. Простой размытый фон (По умолчанию)

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

Пример Размытия

[
  {
    "type": "clip",
    "position": {
      "width": "full",
      "height": "full"
    },
    "fit": "stretch",
    "comment": "Растянутый фон"
  },
  {
    "type": "shader",
    "effect": {
      "type": "blur",
      "intensity": 20
    },
    "position": {
      "width": "full",
      "height": "full"
    }
  },
  {
    "type": "clip",
    "position": {
      "x": "center",
      "y": "center",
      "width": "100%",
      "height": "40%"
    },
    "comment": "Основное видео"
  }
]

2. Геймплей на фоне (Внешнее видео)

Видео с “геймплеем” (например, Minecraft, GTA) зациклено на фоне, а оригинальное видео по центру.

Пример Геймплея

[
  {
    "type": "video",
    "path": "./media/gameplay_background.mp4",
    "position": { "width": "full", "height": "full" },
    "loop_video": true,
    "fit": "stretch",
    "opacity": 1.0,
    "comment": "Зацикленное фоновое видео"
  },
  {
    "type": "clip",
    "position": { "x": "center", "y": "center", "width": "100%", "height": "auto" },
    "comment": "Основной клип поверх геймплея"
  }
]

3. Разделенный экран (Split Screen)

Два видео, расположенных вертикально друг над другом. Полезно для сравнений или видео-реакций. (Здесь мы используем один и тот же клип дважды, но вы можете использовать video для второго).

Пример Split Screen

[
  {
    "type": "clip",
    "position": {
      "x": 0,
      "y": 0,
      "height": "50%"
    },
    "crop": {
      "x_from": 420,
      "x_to": 1500
    },
    "comment": "Верхняя часть"
  },
  {
    "type": "clip",
    "position": {
      "x": 0,
      "y": "50%",
      "width": "100%",
      "height": "50%"
    },
    "crop": {
      "x_from": 1300,
      "x_to": 1920,
      "y_from": 500,
      "y_to": 1080
    },
    "comment": "Нижняя часть"
  }
]

4. Рамка / Наложение (Overlay)

Видео с наложенным прозрачным PNG-изображением (рамка, статистика, брендинг).

Пример Overlay

[
  {
    "type": "clip",
    "position": { "width": "full", "height": "full" },
    "fit": "cover"
  },
  {
    "type": "image",
    "path": "./media/frame_overlay.png",
    "position": { "x": 0, "y": 0, "width": "full", "height": "full" },
    "opacity": 1.0,
    "comment": "PNG изображение с прозрачностью"
  }
]