Создание обучающего видео обычно оказывается сложнее, чем кажется.
Сначала нужно понять исходный текст, подготовить сценарий, затем разделить его на главы, написать закадровый текст и подготовить промпты для визуальных материалов. После генерации изображений и озвучки нужно продолжить создание видеоклипов, а в конце объединить изображение и звук.
Если на любом из этих этапов возникает проблема, всю последующую работу, возможно, придётся переделывать. Особенно это касается обучающих видео: содержание должно быть не только точным, но и визуальный ряд должен соответствовать закадровому тексту, что действительно занимает много времени.
В этот раз я выбрал другой подход: использовал Ace Data Cloud Studio, позволив Agent разбить задачу, а затем последовательно выполнить её в порядке сценария, закадрового текста, изображений и видео.
Весь процесс не сводится к тому, чтобы нажать кнопку и больше ничего не делать: после завершения каждого этапа нужно всё проверить. Если что-то не подходит, это корректируется до перехода к следующему этапу. Так можно и контролировать итоговый результат, и не переключаться постоянно между несколькими платформами.
Иллюстрация ниже — это моё идеальное рабочее состояние: компьютер обрабатывает видео, а я рядом пью кофе, смотрю телефон и время от времени возвращаюсь, чтобы проверить прогресс.

¶ Итак, с чего именно начать?
Задача в этот раз была очень ясной: выбрать существующую статью в блоге и адаптировать её в полноценное видео.
Я выбрал обучающую статью на Ace Data Cloud:
Ежедневный мониторинг позиций SEO-ключевых слов с помощью SERP API
Затем откройте:
После входа в Studio можно сразу начать с творческой задачи, без необходимости заранее создавать сложный рабочий процесс.

¶ Передайте Skill для создания видео в Studio
Я заранее подготовил Skill для создания видео.
Его задача — не создавать итоговое видео напрямую, а сначала привести исходную статью к структуре, подходящей для видеоформата: на какие главы следует разделить видео, о чём говорить в каждой главе, как написать закадровый текст, что показывать на экране, а также какие промпты использовать отдельно для изображений и видео.
При использовании перетащите файл Skill в диалоговое окно Studio, а затем сообщите Agent адрес статьи для обработки и конкретные требования.
Смысл моего запроса был следующим:
Прочитайте указанную статью в блоге и адаптируйте её в видео. Сначала выведите полные главы, включая название, описание, закадровый текст, а также промпты для генерации изображений и видео. Выполняйте всю задачу пошагово, не генерируйте весь контент за один раз.

¶ Сначала подготовьте структуру видео, не спешите создавать визуальные материалы
После отправки задачи Agent сначала прочитает статью, а затем подготовит главы видео на основе её содержания.
Сгенерированный контент достаточно полный: у каждой главы есть название, описание содержания, закадровый текст, а также соответствующие Prompt для изображений и видео. Таким образом, для последующей генерации статичных изображений или создания видеоклипов будет чёткий список действий.
Например, часть исходного текста, посвящённая SERP API, была отдельно оформлена в виде главы и дополнена описанием того, что должно быть показано на экране.

Agent также оценит длительность каждой главы. При первой генерации это видео было разделено на восемь глав, а его общая предполагаемая продолжительность составила около двух с половиной минут.

На этом этапе рекомендуется остановиться и внимательно проверить содержание, а не сразу начинать генерировать изображения.
Потому что на этом этапе стоимость внесения изменений минимальна. Если вернуться к редактированию закадрового текста после того, как изображения, аудио и видео уже сгенерированы, все предыдущие материалы, скорее всего, придётся переделывать.
¶ Сократите закадровый текст и контролируйте темп видео
После проверки я обнаружил, что первая версия закадрового текста была немного длинной.
В обучающем видео больше информации не всегда означает лучше. Если закадровый текст слишком длинный, зрителю становится утомительно слушать, а темп видео легко становится затянутым. Ещё сложнее то, что визуальный ряд должен соответствовать более длинной речи, что также увеличивает сложность дальнейшей генерации видео.
Поэтому я напрямую попросил Agent сократить закадровый текст, сохранив ключевую информацию и убрав повторяющиеся пояснения и слишком книжные предложения.
После корректировки закадровый текст каждой главы был сокращён примерно до восьми-девяти секунд, а общий темп стал заметно легче.

После сокращения закадрового текста недостаточно изменить только текст — нужно также синхронно скорректировать Prompt для изображений и видео. Иначе легко может возникнуть ситуация: закадровый текст уже перешёл к следующему ключевому моменту, а изображение всё ещё остаётся на содержании предыдущего фрагмента.
Я поступил так: попросил Agent заново подготовить описание визуальных материалов на основе нового закадрового текста, чтобы визуальное содержание каждой главы по-прежнему соответствовало озвучке.
¶ Задайте единое фоновое изображение, чтобы сохранить стиль визуального ряда
После подтверждения сценария можно начинать генерировать изображения и закадровый текст.
Перед официальной генерацией я указал Agent фоновое изображение, то есть визуальное референсное изображение.
Это не обязательно: можно использовать только текстовое описание. Но если всё видео содержит несколько глав, я всё же рекомендую подготовить одно фоновое изображение. Оно помогает модели сохранять относительно единый цвет, композицию и стиль бренда, чтобы несколько последовательных сцен не выглядели так, будто они взяты из совершенно разных видео.
Поскольку ранее была изменена длительность закадрового текста, я также попросил Agent заново сгенерировать соответствующие Prompt для визуальных материалов и больше не использовать старую версию.

¶ Выберите подходящий голос для закадрового текста
После определения требований к визуальным материалам Studio вызовет инструмент озвучки в соответствии с потребностями задачи.
У голосов нет абсолютного деления на хорошие и плохие — всё зависит от типа видео. Для обучающих видео обычно не нужны слишком выразительные эмоции: достаточно, чтобы голос был чётким, стабильным и не слишком быстрым. Если автоматически выбранный голос не подходит, можно также напрямую попросить Agent заменить его. Лучше сначала сгенерировать небольшой фрагмент для прослушивания, убедиться, что с голосом, скоростью речи и паузами всё в порядке, а затем пакетно обработать оставшиеся главы.

В этот раз для изображений использовался GPT Image 2, а для озвучки — Fish Audio. Все эти модели можно напрямую вызывать в Studio: достаточно заранее настроить соответствующие коннекторы, и не нужно отдельно писать код для интерфейсов.
При последующей генерации видео всё так же: Agent может продолжать вызывать уже подключённые видеомодели. Генерация изображений требует некоторого времени, на этом этапе достаточно немного подождать.
¶ Сначала посмотреть примеры, подтвердить направление и затем генерировать пакетно
Я не стал сразу генерировать все изображения, а сначала попросил Agent сделать два примера.
На первый взгляд это добавляет ещё один шаг, но на деле экономит время. По примерам можно заранее проверить соотношение сторон, общий стиль, элементы бренда и композицию, а также оценить, подходят ли изображения для последующего превращения в видео.
Если примеры не подходят, нужно лишь скорректировать Prompt или фоновое изображение, и не придётся тратить средства на генерацию для всех последующих глав.

После того как я убедился, что с двумя примерами нет очевидных проблем, я попросил Agent завершить остальной контент.
В итоге все необходимые изображения и аудиофрагменты для восьми глав были полностью сгенерированы. Следующий шаг — последовательно проверить изображения и озвучку.

При проверке не стоит смотреть только на то, хорошо ли выглядит отдельное изображение, нужно оценивать изображения вместе с озвучкой. Содержание, передаваемое изображением, должно соответствовать озвучке; один и тот же персонаж или интерфейс не должны внезапно заметно меняться; важная информация, упомянутая в озвучке, желательно должна быть отражена в кадре; стиль и цветовая гамма соседних глав также должны быть максимально единообразными.
¶ Заранее определить способ генерации видео
После подготовки изображений и аудио можно приступать к созданию видеофрагментов.
Однако, чтобы избежать лишних обходных путей, я не стал сразу позволять Agent действовать свободно, а сначала добавил несколько правил, включая то, какой главе соответствует каждый видеофрагмент, какое изображение использовать как начальный кадр, как длительность видео должна соответствовать озвучке, а также амплитуду движения камеры и согласованность стиля.
Кадры урока должны оставаться чёткими, не следует добавлять посторонние элементы и произвольно изменять бренд, интерфейс и основные объекты в кадре. Стиль соседних видео должен быть по возможности единообразным, а перед официальной пакетной генерацией нужно сначала создать один фрагмент для проверки результата.

Этих ограничений не обязательно должно быть чем больше, тем лучше, но ключевые требования лучше чётко обозначить заранее. Если совсем не задавать ограничений, каждый видеофрагмент по отдельности может выглядеть неплохо, но при объединении легко возникают проблемы со скачками стиля, слишком большими различиями в движении камеры или несогласованностью персонажей.
¶ Сначала сделать один видеофрагмент
Как и при создании изображений ранее, я снова использовал подход «сначала сделать образец».
Сначала генерируется первый фрагмент, чтобы проверить динамический эффект, движение камеры, стабильность изображения и общий стиль. Если уже в первом фрагменте есть проблема, её можно сразу скорректировать, не дожидаясь завершения всех фрагментов.
Посмотреть первый видеофрагмент

После завершения первого фрагмента я всё проверил: общий результат оказался приемлемым, без явных скачков изображения, а движение камеры выглядело довольно естественно.
После подтверждения, что направление верное, я попросил Agent продолжить генерацию оставшихся видеофрагментов.

¶ Использование FFmpeg для локального объединения видео и озвучки
После генерации всех видеофрагментов остаётся последний шаг: объединить видео с соответствующей озвучкой.
Studio может помочь выполнить предыдущую творческую работу, но я предпочитаю выполнять финальное объединение локально. Так удобнее скачивать и управлять файлами, а также можно чётко контролировать каждый аудио- и видеофрагмент. После изменения скрипта его можно запускать повторно, а при возникновении проблем их также легче локализовать.
Я попросил Agent сгенерировать Bash-скрипт, а затем выполнил его с помощью локально установленного FFmpeg.
#!/usr/bin/env bash
set -euo pipefail
videos=(
"https://platform2.cdn.acedata.cloud/grok/0d91b61a-5c15-412d-9eb3-ed3ba3c2b289.mp4"
"https://platform2.cdn.acedata.cloud/grok/24c98593-2d2c-41da-82ff-85101ef65564.mp4"
)
voices=(
"https://platform2.cdn.acedata.cloud/fish/eef753c1-4b5b-400f-8fce-acedd2621ce9.mp3"
"https://platform2.cdn.acedata.cloud/fish/52dd45d8-1e6d-4a67-8f02-0473c56d960f.mp3"
)
mkdir -p output
for i in "${!videos[@]}"; do
n=$(printf "%02d" $((i + 1)))
ffmpeg -y \
-i "${videos[$i]}" \
-i "${voices[$i]}" \
-map 0:v:0 \
-map 1:a:0 \
-c:v copy \
-c:a aac \
-b:a 192k \
-ar 48000 \
-ac 2 \
-af "apad" \
-shortest \
-movflags +faststart \
"output/scene-${n}-narrated.mp4"
done
Этот скрипт в соответствии с порядком в массивах объединяет каждый видеофрагмент с соответствующей озвучкой.
-map 0:v:0 используется для выбора видеодорожки из первого входного файла, а -map 1:a:0 — для выбора аудиодорожки из второго входного файла. -c:v copy напрямую копирует видео без повторного кодирования; -c:a aac преобразует озвучку в более совместимый аудиоформат AAC.
-af "apad" добавляет тишину при недостаточной длине аудио, -shortest останавливает вывод при завершении более короткой аудио- или видеодорожки, а -movflags +faststart делает MP4 более подходящим для воспроизведения по сети.
При фактическом использовании достаточно полностью заполнить массивы videos и voices и убедиться, что порядок видео и аудио соответствует друг другу.
¶ Передача скрипта локальному Codex для выполнения
После генерации скрипта я не стал дальше поручать онлайн-Agent загрузку и сборку, а напрямую скопировал его локально и передал Codex для выполнения.
Можно попросить его проверить, установлен ли FFmpeg локально, создать папку проекта, сохранить Bash-скрипт, скачать материалы и выполнить команду сборки. После завершения обработки — проверить, цел ли выходной файл, и упорядочить финальные фрагменты по порядку.
Преимущества такого подхода очевидны: загрузка и сборка выполняются локально, что позволяет сэкономить немало Token, а сгенерированные материалы сразу сохраняются на компьютере, поэтому позже удобно продолжать монтаж, добавлять субтитры или делать резервные копии.

¶ Итоговый результат
После завершения сборки всех фрагментов общий результат оказался лучше, чем я ожидал.
Структура глав видео получилась довольно понятной, а стиль изображения в целом сохранил единообразие. После сокращения озвучка стала не такой затянутой, как вначале, и содержание урока стало звучать более компактно.
Что ещё важнее, весь процесс не сводился к тому, чтобы разом передать задачу модели и надеяться на удачу, а был разделён на несколько этапов с постепенной проверкой.
Если скрипт не подходит — сначала исправляем скрипт; если озвучка слишком длинная — сначала сокращаем озвучку; если стиль изображений не соответствует — сначала корректируем образец изображения; если есть проблемы с движением камеры в видео — сначала изменяем первый фрагмент. При такой последовательной проверке в итоге мест для переделки, наоборот, становится меньше.

¶ Напоследок о впечатлениях от этого опыта
По итогам этой работы я считаю, что самое важное — не генерировать весь контент сразу с самого начала. Будь то изображения, озвучка или видео, сначала стоит сделать один-два образца и посмотреть на результат: если обнаружатся проблемы, их можно будет сразу скорректировать, а не проводить масштабную переделку после завершения всего.
Также не стоит пытаться выполнить всю задачу за один шаг. Сначала упорядочить сценарий, затем изменить озвучку, потом подготовить изображения, аудио и видео. После завершения каждого этапа нужно проверять результат: хотя на первый взгляд шагов становится больше, на деле это экономит немало времени.
Финальную сборку видео также необязательно продолжать выполнять в Studio. Творческую часть можно передать Studio, а локальную загрузку и сборку — FFmpeg: каждый будет заниматься тем, что умеет лучше, работать станет удобнее, и удастся сократить ненужные затраты.
В конечном счёте, самое удобное в Ace Data Cloud Studio — не то, что она позволяет нажать кнопку и сразу получить готовый ролик, а то, что она связывает воедино изначально разрозненный творческий процесс. Нам нужно лишь проверять и корректировать ключевые этапы, а оставшуюся повторяющуюся работу можно постепенно поручить Agent.

