Video Automation

Пакетный видеорендеринг и генерация субтитров в After Effects через JSX-плагин

✍️ Aleksey Belyaev 📅 28.10.2026
#After Effects #JSX scripting #Dynamic Subtitles #Video Pipeline #Рендер-ферма
📋 Talaan ng Nilalaman:

Постановка задачи


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

Задача: создать модульный конвейер на базе ExtendScript JSX для Adobe After Effects, который полностью автоматизирует жизненный цикл создания видео от входящего JSON с текстом до экспорта готовых MP4 в вертикальном (1080x1920) и горизонтальном (1920x1080) разрешениях.

Архитектура модульного пайплайна


Чтобы конвейер был легко масштабируемым и отлаживаемым, весь процесс был разделен на изолированные этапы (шаги):

  • step0.jsx — Инициализация проекта, очистка кэша композиций и проверка исходных ассетов.

  • step1_import.jsx — Потоковый импорт графических и видеофрагментов в проект.

  • step1_subtitles.jsx — Разбор JSON-файла с таймингами реплик и динамическое создание текстовых слоев с анимацией.

  • step1_watermark.jsx — Автоматическое наложение защитных водяных знаков и логотипов с масштабированием под пропорции.

  • step2_audio_mix.jsx — Сведение закадрового голоса, фоновой музыки и звуковых эффектов с авто-уровнями громкости.

  • step3_transitions.jsx — Наложение динамических переходов между сценами.

  • step4_export.jsx — Добавление в Render Queue After Effects и запуск экспорта с контролем завершения.


  • Модульный подход позволяет запускать как весь конвейер целиком (run_pipeline.jsx), так и изолированно тестировать конкретный шаг (например, только генерацию субтитров) на тестовом наборе данных.

    Генерация динамических субтитров из JSON


    Одной из самых трудоемких задач является точное позиционирование и анимация субтитров под тайминги аудиодорожки. Скрипт считывает JSON с временными метками слов и автоматически создает ключевые кадры анимации непрозрачности и масштаба (Bounce/Fade Effect):
    • source.javascript
    // Фрагмент разбора субтитров из step1_subtitles.jsx
    function applySubtitlesToComp(comp, subtitlesData) {
        for (var i = 0; i < subtitlesData.length; i++) {
            var item = subtitlesData[i];
            var textLayer = comp.layers.addText(item.text);
            textLayer.inPoint = item.startTime;
            textLayer.outPoint = item.endTime;
    
            // Позиционирование по нижнему краю композиции
            var textProp = textLayer.property("Source Text");
            var textDoc = textProp.value;
            textDoc.fontSize = 64;
            textDoc.justification = ParagraphJustification.CENTER_JUSTIFY;
            textProp.setValue(textDoc);
    
            // Добавление динамической анимации появления
            var scaleProp = textLayer.property("Transform").property("Scale");
            scaleProp.setValueAtTime(item.startTime, [80, 80]);
            scaleProp.setValueAtTime(item.startTime + 0.15, [100, 100]);
        }
    }
    

    Управление рендером и оптимизация ресурсов


    При потоковой генерации видео критически важно не переполнять оперативную память After Effects. В конвейере реализована автоочистка кэша памяти (app.purge(PurgeTarget.ALL_CACHES)) после каждого готового ролика, что гарантирует многочасовую непрерывную работу без утечек памяти и аварийных завершений.

    Практическая отдача


  • Производительность: автоматический монтаж 1 ролика длительностью 60 секунд занимает ~45 секунд на современном процессоре.

  • Масштабируемость: возможность запуска параллельных рендер-процессов через aerender CLI на выделенных серверах.

  • Экономия ресурсов: один настроенный скрипт заменяет работу целого отдела видеомонтажеров при пакетной сборке контента.

  • Контакты для разработки скриптов автоматизации


    Если вам требуется разработка автоматизированных плагинов и скриптов для Adobe After Effects, Premiere Pro, Photoshop или Illustrator:

  • Telegram: @AlekseyBelyaev

  • Профиль: построение рендер-ферм, ExtendScript JSX, видеоконвейеры, интеграция с REST API и базами данных.
  • 👨‍💻
    Interesado ka bang magsagawa ng katulad na proyekto?
    Kumpletong awtomasyon ng larawan at video: mga script para sa Photoshop, After Effects, Premiere Pro, FFmpeg, Python at JS, mga server ng render, at pagawaan ng content.
    💬 Makipag-ugnayan sa Telegram
    ← Bumalik sa lahat ng artikulo sa blog