MCPcopy
hub / github.com/inlife/nexrender

github.com/inlife/nexrender @v1.63.4 sqlite

repository ↗ · DeepWiki ↗ · release v1.63.4 ↗
3,239 symbols 6,879 edges 256 files 3 documented · 0%
README
<img src="https://user-images.githubusercontent.com/2182108/60247318-22ba6480-98c9-11e9-8447-1cbb01db15fe.png" />







<a href="https://github.com/inlife/nexrender/releases"><img alt="GitHub Release Date" src="https://img.shields.io/github/release-date/inlife/nexrender" /></a>
<a href="https://stand-with-ukraine.pp.ua"><img alt="Made in Ukraine" src="https://img.shields.io/badge/made_in-ukraine-ffd700.svg?labelColor=0057b7" /></a>
<a href="https://github.com/inlife/nexrender/releases"><img src="https://img.shields.io/github/downloads/inlife/nexrender/total?label=release%20downloads"/></a>
<a href="https://www.npmjs.com/package/@nexrender/core"><img src="https://img.shields.io/npm/dt/@nexrender/core?label=npm%20downloads"/></a>
<a href="https://discord.gg/S2JtRcB"><img src="https://discordapp.com/api/guilds/250389725406429199/embed.png" alt="Discord server" /></a>










Automate your <a href="https://github.com/inlife/awesome-ae">Adobe After Effects</a> rendering workflows. Create data-driven and template based videos.







<sub>
    Built with love using nodejs
    &bull; Brought to you by <a href="https://github.com/inlife">@inlife</a>
    and other <a href="https://github.com/inlife/nexrender/graphs/contributors">contributors</a>
</sub>

Table of contents

Introduction

nexrender is a simple, small, carefully designed application with the main goal of rendering automation for Adobe After Effects based rendering workflows.

The information in this document is targeted at people at least somewhat comfortable with scripting or development, and who have basic knowledge of javascript language and json formats.

If coding isn’t your thing or you want a quick managed solution, we got you! We offer a range of services to help you get started much faster and hassle-free. * Nexrender Cloud is a ready-to-use SaaS rendering platform created with ease in mind and supplemented with additional features. * If you’re looking for something super flexible, tailored specifically to your unique needs, we also build custom infrastructures based on your requirements and integrated with your existing setup. * In case, you just need to render something very quickly, let us know too! We offer batch rendering just for such cases.

Features

  • data-driven, dynamic, personalized video rendering
  • automated video management, processing, and delivery
  • network-oriented project structure, render farm
  • highly modular nature, extensive plugin support
  • works only in cli mode, never launches After Effects GUI application
  • does not require licenses for Adobe After Effects on any worker machine
  • free to use and open source

How it works

  • rendering: It uses Adobe After Effects' aerender command-line interface application.
  • compositing: It creates a temporary folder, copies project and replaces assets with provided ones.
  • personalization: It uses AE's expressions, scripting, and compositing (noted above).
  • scheduling: It stores projects in a local database, managed from anywhere using http api.
  • network: It renders project per machine, and can be used to render several projects simultaneously.
  • farm: Can be used to render a single project on several machines via Multi-Machine Sequence.

Alternatives

The main alternative to our open-source project is Nexrender Cloud - our hosted SaaS platform with easy setup, additional features and best price on the market.

Among more expensive and less flexible alternatives, there is Plainly, a tool built on Nexrender infrastructure that offers cloud rendering. Another noteworthy option currently available is Dataclay's Templater bot edition.

Installation

You can download binaries directly from the releases section, or install them using npm, whichever option works better for you.

However, please note: the npm version of the binaries doesn't include all optional plugin packages that are covered in the usage section. If you wish to install them as well, please do so by providing each one individually:

npm i -g @nexrender/cli @nexrender/action-copy @nexrender/action-encode ...

Usage

We will be using nexrender-cli binary for this example. It's recommended to download/install it if you haven't already.

⚠ If using WSL check out wsl support

Job

A job is a single working unit in the nexrender ecosystem. It is a json document, that describes what should be done, and how it should be done. Minimal job description always should contain a pointer onto Adobe After Effects project, which is needed to be rendered, and a composition that will be used to render.

The pointer is src (string) field containing a URI pointing towards specified file, followed by composition (string) field, containing the name of the composition that needs to be rendered.

Note: check out supported protocols for src field.

// myjob.json
{
    "template": {
        "src": "file:///users/myuser/documents/myproject.aep",
        "composition": "main"
    }
}

or for remote file accessible via http

// myjob.json
{
    "template": {
        "src": "http://example.com/myproject.aep",
        "composition": "main"
    }
}

Submitting this data to the binary will result in start of the rendering process:

$ nexrender-cli '{"template":{"src":"file:///home/documents/myproject.aep","composition":"main"}}'

Note: on MacOS you might need to change the permissions for downloaded file, so it would be considered as an executable. You can do it by running: $ chmod 755 nexrender-cli-macos

or more conveniently using the --file option

$ nexrender-cli --file myjob.json

Note: its recommended to run nexrender-cli -h at least once, to read all useful information about available options.

More info: @nexrender/cli

After Effects 2023

Please note that for After Effects 2023, it's vital to set up an Output Module, even if you want to rely on the default output module. After Effects 2023 rendering binary (aerender) in a lot of cases will not render a composition unless it has a configured output module. Additionally, AE2023 now allows rendering directly to mp4, so consider setting up a custom value for outputExt as well. To do that, take a look at following example:

// myjob.json
{
    "template": {
        "src": "file:///users/myuser/documents/myproject_ae2023.aep",
        "composition": "main",
        "outputModule": "H.264 - Match Render Settings - 15 Mbps",
        "outputExt": "mp4",
        "settingsTemplate": "Best Settings"
    }
}

Assets

We've successfully rendered a static project file using nexrender, however, there is not much point doing that unless we are going to add some dynamic data into the mix.

A way to implement something like that is to add an asset to our job definition:

// myjob.json
{
    "template": {
        "src": "file:///d:/documents/myproject.aep",
        "composition": "main"
    },
    "assets": [
        {
            "src": "file:///d:/images/myimage.png",
            "type": "image",
            "layerName": "background.png"
        }
    ]
}

What we've done there is we told nexrender to use a particular asset as a replacement for something that we had defined in our aep project. More specifically, when rendering is gonna happen, nexrender will copy/download this asset file, and attempt to find and replace footage entry by specified layer name.

Check out: detailed information about footage items.

Actions

You might've noticed that unless you added --skip-cleanup flag to our command, all rendered results will be deleted, and a big warning message will be shown every time you attempt to run the nexrender-cli with our job.

The reason is that we haven't defined any actions that we need to do after we finished actual rendering. Let's fix that and add a simple one, copy.

// myjob.json
{
    "template": {
        "src": "http://example.com/assets/myproject.aep",
        "composition": "main"
    },
    "assets": [
        {
            "src": "http://example.com/assets/myimage.png",
            "type": "image",
            "layerName": "background.png"
        }
    ],
    "actions":{
        "postrender": [
            {
                "module": "@nexrender/action-encode",
                "preset": "mp4",
                "output": "encoded.mp4"
            },
            {
                "module": "@nexrender/action-copy",
                "input": "encoded.mp4",
                "output": "d:/mydocuments/results/myresult.mp4"
            }
        ]
    }
}

We've just added a postrender action, that will occur right after we finished rendering. A module that we described in this case, is responsible for copying the result file from a temp folder to the output folder.

There are multiple built-in modules within nexrender ecosystem:

Every module might have its own set of fields, however, module field is always there.

Also, you might've noticed that actions is an object, however, we described only one (postrender) field in it. And there are more: - predownload - can be used to modify the job before the assets are downloaded - postdownload - can be used to modify the job after the assets are downloaded - prerender - can be used to process data/assets just before the actual render will start.

Also, if you are planning on having more than one action, please note: actions are order-sensitive, that

Core symbols most depended-on inside this repo

require
called by 314
packages/nexrender-action-lottie/lib/jsx/escodegen.jsx
match
called by 128
packages/nexrender-action-lottie/lib/jsx/esprima.jsx
expect
called by 115
packages/nexrender-action-lottie/lib/jsx/esprima.jsx
createNS
called by 90
packages/nexrender-action-lottie/lib/assets/player/lottie.js
createNS
called by 90
packages/nexrender-action-lottie/lib/assets/player/standalone.js
lex
called by 90
packages/nexrender-action-lottie/lib/jsx/esprima.jsx
assert
called by 59
packages/nexrender-action-lottie/lib/jsx/esprima.jsx
setTimeout
called by 58
packages/nexrender-action-lottie/lib/jsx/utils/generalUtils.jsx

Shape

Function 3,229
Method 8
Class 2

Languages

TypeScript100%

Modules by API surface

packages/nexrender-action-lottie/lib/assets/player/standalone.js290 symbols
packages/nexrender-action-lottie/lib/assets/player/lottie.min.js290 symbols
packages/nexrender-action-lottie/lib/assets/player/lottie.js290 symbols
packages/nexrender-action-lottie/lib/assets/player/lottie_html.min.js275 symbols
packages/nexrender-action-lottie/lib/assets/player/lottie_canvas.min.js271 symbols
packages/nexrender-action-lottie/lib/assets/player/lottie_svg.min.js264 symbols
packages/nexrender-action-lottie/lib/assets/player/lottie_light_canvas.min.js164 symbols
packages/nexrender-action-lottie/lib/assets/player/lottie_light_html.min.js160 symbols
packages/nexrender-action-lottie/lib/jsx/esprima.jsx159 symbols
packages/nexrender-action-lottie/lib/assets/player/lottie_light.min.js149 symbols
packages/nexrender-action-lottie/lib/jsx/importers/lottieImporter.jsx52 symbols
packages/nexrender-action-lottie/lib/jsx/escodegen.jsx51 symbols

Dependencies from manifests, versioned

@aws-sdk/client-s33.705.0 · 1×
@aws-sdk/credential-providers3.699.0 · 1×
@aws-sdk/lib-storage3.705.0 · 1×
@google-cloud/storage7.7.0 · 1×
@nexrender/api1.62.0 · 1×
@nexrender/core1.63.4 · 1×
@nexrender/database-redis1.60.10 · 1×
@nexrender/types1.62.0 · 1×
adm-zip0.5.10 · 1×
amazon-s3-uri0.1.1 · 1×
arg4.1.0 · 1×
async-mutex0.3.2 · 1×

For agents

$ claude mcp add nexrender \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact