Skip to content

Latest commit

 

History

History
156 lines (122 loc) · 6.58 KB

README_AE.md

File metadata and controls

156 lines (122 loc) · 6.58 KB

Intro- and Outro-Generator for Adobe After Effects

This version of the intro-outro-generator is made to work on Adobe After Effects Files. It will use your AE project file, use data from your schedule.xml, and renders the project into .ts intro files.

Yes! That's what I want!

Okay, let's go.

  • Install Adobe After Effects CC 2018
  • Install python3, python3-lxml, python3-cssutils (or use virtualenv, see below), inkscape and libav-tools
  • Fork this repo on github and clone your personal fork to your local system.
  • Copy one of the existing setup: voc_ae
  • Open intro.aep and modify it. You can also create a new project. For the VOC-Setup you should use a Pixel-Resolution of 1920×1080 (or for the legacy SD/.dv-Pipeline 1024×576).
    • If you create a new project, name it intro.aep and also copy intro.jsx and intro.scpt into the same folder.
    • Create a new composition and name it intro.
  • Use Paragraph Text Layers. This way the text will automatically wrap inside the specified area if it gets too long.
  • Type Placeholder-Texts where the script should substitute content from your schedule.xml. By default the following placeholders are substituted
    • $id - Talk-ID (useful in links to the Frab-Page)
    • $title - Title of the Talk
    • $subtitle - You guessed it...
    • $personnames - Comma-Separated list of Speaker-Names
  • Rename the Text layers as per their placeholder
    • intro_id for the $id placeholder
    • intro_title for the $title placeholder
    • intro_subtitle for the $subtitle placeholder
    • intro_personnames for the $personnames placeholder
  • Edit intro.jsx and duplicate the required blocks
    • Change the id of the app.project.item(2) to the id of your intro composition. (That is the order at which it is showing in the project library)
    • The template included with this repo only replaces intro_title and intro_personnames
      • Just copy/paste the 2x blocks required, and change the variables, to also use it for the other placeholders.
  • Run ./make-adobe-after-effects.py yourproject/ --debug to generate your first intro
    • if everything look like you'd want them to, run ./make-adobe-after-effects.py yourproject/ .

Python3 virtualenv

Create virtualenv and fetch python deps:

$ virtualenv -p python3 env  
$ . ./env/bin/activate
$ pip3 install -r requirements.txt
Debian

On debian, for python lxml dependencies:

sudo apt-get install libxml2-dev libxslt1-dev

Quick start

Start your own project by copying "voc_ae" folder.

Just type ./make-adobe-after-effects.py or ./make-adobe-after-effects.py -h in the main directory and you'll get the following help information.

usage: ./make-adobe-after-effects.py yourproject/ https://url/to/schedule.xml

C3VOC Intro-Outro-Generator - Variant to use with Adobe After Effects Files

positional arguments:
  Project folder
                              Path to your project folder with After Effects Files (intro.aep/scpt/jsx)

  Schedule-URL
                              URL or Path to your schedule.xml


optional arguments:
  -h, --help          show this help message and exit
  --debug
                              Run script in debug mode and render with placeholder texts,
                              not parsing or accessing a schedule. Schedule-URL can be left blank when
                              used with --debug
                              This argument must not be used together with --id
                              Usage: ./make-adobe-after-effects.py yourproject/ --debug

  --id IDS [IDS ...]
                              Only render the given ID(s) from your projects schedule.
                              This argument must not be used together with --debug
                              Usage: ./make-adobe-after-effects.py yourproject/ --id 4711 0815 4223 1337

How does it work

There are 3x files required to make the render work intro.aep, intro.jsx and intro.scpt. make-adobe-after-effects.py will run the intro.scpt script with intro.aep and intro.jsx as arguments. Once done, the project file will be passed to aerender to create an intermediate .mov file. Final step is to convert the .mov to .ts Here are some details about the files and what they are for.

intro.aep

This is the After Effects project file. It has to have the following items included:

  • Composition named intro
  • Paragraph text layers named intro_<placeholder> for each of the supported placeholder

intro.jsx

This is an After Effects Script file doing the text replacement of the placeholder texts.

var comp = app.project.item(2);

var layer_title = comp.layer('intro_title');
var textProp_title = layer_title.property("Source Text");
var textDocument_title = textProp_title.value;

var layer_persons = comp.layer('intro_personnames');
var textProp_persons = layer_persons.property("Source Text");
var textDocument_persons = textProp_persons.value;

textDocument_title.text = "$title";
textProp_title.setValue(textDocument_title);

textDocument_persons.text = "$personnames";
textProp_persons.setValue(textDocument_persons);

app.project.save();

To add an additional block to replace another placeholder, copy the following:

var layer_<placeholder> = comp.layer('intro_<placeholder>');
var textProp_<placeholder> = layer_<placeholder>.property("Source Text");
var textDocument_<placeholder> = textProp_<placeholder>.value;
textDocument_<placeholder>.text = "$<placeholder>";
textProp_<placeholder>.setValue(textDocument_<placeholder>);

Make sure that the correct layer has been added to the AE project file, otherwise the script will fail.

intro.scpt

This is an Apple Script which will open AE with the project file, and run the AE script.

on run argv
	set aefile to (POSIX file (item 1 of argv))
	set aescript to (POSIX file (item 2 of argv))
	tell application "Adobe After Effects CC 2018"
		open aefile
		DoScriptFile aescript
		quit
	end tell
end run

It works! It doesn't work!

If it works, push your code to github. This way everybody can see which beautiful animations you created and we can all learn from each other. If it doesn't work, ask on IRC or on the Mailinglist and we'll see that we can solve your problem. If you think you found a bug, file an Issue. Or even better, fix it and send a Pull-Request.