Монтаж статичного дубля в консоли
Скилл закрывает разрыв между редакторским гайдом и инструментами: как сделать ролик динамичным, написано много где, а руки к этому обычно прикладывают в CapCut. Здесь всё то же самое делает ffmpeg, а решения принимает модель.
Что на входе: один дубль, снятый с одной точки, человек говорит в камеру. Что на выходе: вертикальный ролик 1080×1920 с вырезанными паузами, сменой крупности, титрами и сведённым звуком.
Четыре приёма, на которых всё держится
Зритель скучает не потому, что человек стоит на месте, а потому, что картинка долго не меняется. Цель монтажа — менять её каждые 1,5–3 секунды. Для этого хватает:
- Смена крупности — из одного кадра вырезаются общий, средний и крупный планы.
- Перебивки (B-roll) — отдельно снятые детали поверх речи.
- Титры с акцентами — основная масса мелко, 2–4 главных слова крупно, одно цветом.
- Звуковые акценты — музыка тише голоса, короткие звуки на события.
Порядок работы
Шаг 1. Посмотреть план до рендера
python scripts/reel.py дубль.mp4 --dry-run
Скрипт напечатает, сколько пауз нашёл, где лицо, до какой крупности можно приближаться и как он собирается нарезать дубль. Это самое важное место: если предельная крупность около 1,0, дубль снят слишком близко, приём смены крупности не сработает вообще, и лучше сказать об этом человеку сразу, а не показывать ему потом ролик, в котором картинка не меняется.
Шаг 2. Выбрать акцентные слова
Их выбирает модель или человек, не скрипт. Прочитайте расшифровку
(<дубль>-work/words.json появляется после первого прогона) и возьмите:
- 2–4 акцентных слова — те, ради которых сказана фраза;
- одно слово-призыв — то, что зритель должен написать в комментариях или запомнить.
Не выделяйте служебные слова и не ставьте больше одного цветного слова на ролик: если выделено всё, не выделено ничего.
Шаг 3. Собрать
python scripts/reel.py дубль.mp4 -o ролик.mp4 \
--accent впервые главное результат --cta подпишись \
--broll руки.mp4@7.5:1.8 --broll лицо.mp4@12.5:1.2 \
--music бит.mp3 --whoosh вжух.wav --pop поп.wav
Перебивка пишется как файл@секунда:длительность по таймлайну готового ролика
(после вырезания пауз). Музыка, звуки и перебивки необязательны.
Шаг 4. Посмотреть глазами
Рядом с роликом появляется раскадровка <ролик>-sheet.png — двенадцать кадров
в одной картинке. Открывайте её, а не сам файл: по ней за один взгляд видно,
меняется ли картинка, не срезана ли макушка, не закрывают ли титры лицо.
Отдельный инструмент для просмотра видео для этого не нужен.
Шаг 5. Проверить по списку
- Картинка меняется каждые 1,5–3 секунды.
- Есть минимум три крупности; наезды — на главное, отъезд — перед финалом.
- Перебивки стоят на словах, которые иллюстрируют.
- Титры не закрывают лицо и не уезжают под интерфейс соцсети.
- Выделено 2–4 слова, цветом — одно.
- Музыка тише голоса, звуки не чаще раза в 2–3 секунды.
- Ролик понятен без звука.
Что скрипт решает сам, а что нет
Сам: где паузы и сколько от них оставить; где лицо и куда его поставить в кадре; до какой крупности можно приближаться; где границы планов (по паузам между словами); какой план чем разбавить; тайминги титров (и пересчёт их после вырезания пауз).
Не сам, и не должен: какой дубль лучше; какое слово главное; в какой момент нужен наезд; что показать перебивкой; что вообще стоит говорить. Это работа человека или ваша как модели — договоритесь об этом до сборки, а не после.
Требования
- ffmpeg и ffprobe в PATH (сборка с libx264,
subtitles,zoompan,sidechaincompress). pip install openai-whisper opencv-python insightface onnxruntime— whisper нужен для титров, остальное для привязки кропа к лицу. Без них скрипт работает, но титров не будет, а кроп пойдёт от центра кадра.- Шрифт с кириллицей для титров (по умолчанию Arial и Arial Black).
Съёмка, без которой монтаж не получится
- Запас вокруг человека. Снимать надо так, чтобы было видно по пояс, с воздухом сверху и по бокам. Если лицо занимает половину кадра, приближаться некуда и главный приём пропадает. Встать от камеры на 1,5–2 метра.
- Вертикально и в 4K. Из вертикального 4K (2160 точек в ширину) можно приблизиться вдвое без потери качества. Если снять горизонтально и вырезать вертикаль, в ней останется 1215 точек и запаса почти не будет — совет «снимай горизонтально, потом вырежешь» работает только для горизонтального ролика.
- Текст по фразам, дублями. Говорить фразу 2–3 раза подряд; лишнее уберётся, стыки спрячутся сменой крупности.
- После основного плана — 2–3 детали: руки, эмоция, предмет. Каждую с новой точки.
Подробности
references/recipes.md — все команды ffmpeg по отдельности, с замерами и граблями:
почему crop не умеет менять размер во времени, как сделать настоящий смаз движения
на ударном наезде, почему amix без normalize=0 съедает голос, что ломается
в путях у фильтра subtitles.