Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Rust Bindings for Adobe After Effects® & Premiere Pro® SDKs
High-level, safe Rust bindings for the Adobe After Effects (Ae) and Adobe Premiere Pro (Pr) SDKs.
- Wraps many Ae & Pr API suites in safe Rust.
- Provides macros to generate all plugin boilerplate.
- Build and package entirely with Rust – no external build tools needed.
Quick Start
-
Install
just: -
Add dependencies in
Cargo.toml: -
Define your plugin description in
build.rsand write your plugin code. Check out examples/. -
Download
AdobePlugin.justinto your project root (next toCargo.toml). -
Build your plugin:
[!NOTE] If using Premiere SDK features, add to your
build.rs:println!;
Examples
Basic plugin examples: examples/.
Build an example:
CARGO_TARGET_DIR=/target
Advanced plugins
- Gyroflow plugin is an example of pure Rust plugin with efficient zero-copy GPU rendering.
- ntsc-rs is a video effect which emulates NTSC and VHS video artifacts.
- For more advanced use cases, refer to the C/C++ examples from the SDK.
Debugging tips:
- If the plugin fails to load, check
Plugin Loading.logor run AfterEffects from the CLI in your debugger of choice. - On macOS, common pitfails are signing or an issue with
PkgInfo/Info.plist. - On Windows, logs appear in DbgView. On macOS, use Console.
Development Notes
When developing your plugin it's best to use the debug build - it will catch and display panics
for you and it will log any messages and stack traces to DbgView (on Windows) or Console (on
macOS). This is done by running just build.
The release version can be built using just release
-
To enable optimizations in the debug build:
[] = 3 -
To add debug symbols in release builds:
[] = true = true -
To enable panic catching in release builds, add this to
build.rs:println!;
After Effects vs Premiere
- Ae is the main plugin engine; Pr loads most Ae plugins.
- Pr lacks
AEGPsuites and always uses software rendering. - Pr defines a separate GPU entry point via
premiere::define_gpu_filter!. - You cannot build a Pr-only video filter – Ae SDK is required.
Regenerating Bindings
Pre-generated bindings are included, so building the plugin just works.
If you want to regenerate the SDK bindings:
-
Download the Adobe After Effects SDK.
-
Set environment variables:
-
Run
just build.
⚠️ Note: Adobe’s public SDK may be outdated for 3D Artisan API. This mainly affects custom 3D renderer plugins. 2D plugins are unaffected.
Wrapped Suites
Extensive portions of Ae and Pr SDKs are wrapped:
| AEGP | PF | DRAWBOT | Other |
|---|---|---|---|
| 🔳 Artisan Util | ✅ AE Adv App | ✅ Draw | ✅ AE Plugin Helper |
| ✅ Camera | ✅ AE Adv Item | ✅ Image | ✅ AE Plugin Helper 2 |
| ✅ Canvas | 🔳 AE Adv Time | ✅ Path | |
| 🔳 Collection | ✅ AE App | ✅ Pen | |
| ✅ Command | ✅ AngleParam | ✅ Supplier | |
| ✅ Comp | 🔳 ANSI | ✅ Surface | |
| ✅ Composite | ✅ Background Frame | ||
| ✅ Compute | 🔳 Batch Sampling | ||
| ✅ Dynamic Stream | ✅ Cache On Load | ||
| ✅ Effect | ✅ Channel | ||
| 🔳 File Import Manager | ✅ Color Settings | ||
| ✅ Footage | ✅ Color Callbacks | ||
| ✅ Hash | ✅ Color Callbacks 16 | ||
| ✅ IO In | ✅ Color Callbacks Float | ||
| 🔳 IO Out | ✅ ColorParam | ||
| ✅ Item | ✅ Effect Custom UI | ||
| 🔳 Item View | ✅ Effect Custom UI Overlay Theme | ||
| 🔳 Iterate | ✅ Effect Sequence Data | ||
| ✅ Keyframe | ✅ Effect UI | ||
| 🔳 Layer Mask | ✅ Fill Matte | ||
| ✅ Layer Render Options | ✅ GPU Device | ||
| ✅ Layer | ✅ Handle | ||
| ✅ Light | ✅ Iterate8 | ||
| 🔳 Marker | ✅ iterate16 | ||
| ✅ Mask Outline | ✅ iterateFloat | ||
| ✅ Mask | ✅ Param Utils | ||
| 🔳 Math | ✅ Path Data | ||
| ✅ Memory | ✅ Path Query | ||
| ✅ Output Module | ✅ Pixel Data | ||
| ✅ Persistent Data | ✅ Pixel Format | ||
| ✅ PF Interface | ✅ PointParam | ||
| ✅ Proj | 🔳 Sampling8 | ||
| 🔳 QueryXform | 🔳 Sampling16 | ||
| ✅ Register | 🔳 SamplingFloat | ||
| ✅ Render Asyc Manager | ✅ Source Settings | ||
| ✅ Render Options | ✅ Transition | ||
| ✅ Render Queue Item | ✅ Utility | ||
| ✅ Render Queue | ✅ World | ||
| ✅ Render | ✅ World Transform | ||
| 🔳 RenderQueue Monitor | |||
| ✅ Sound Data | |||
| ✅ Stream | |||
| 🔳 Text Document | |||
| 🔳 Text Layer | |||
| 🔳 Tracker | |||
| 🔳 Tracker Utility | |||
| ✅ Utility | |||
| 🔳 Workspace Panel | |||
| ✅ World |
*The register suite currently excludes the artisan and AEIO registration API
| Premiere | MediaCore | Control Surface | Other |
|---|---|---|---|
| 🔳 Audio | 🔳 Accelerated Render Invocation | 🔳 ControlSurface | ✅ PF Background Frame |
| 🔳 Clip Render | 🔳 App Info | 🔳 ControlSurface Command | ✅ PF Cache On Load |
| 🔳 Deferred Processing | 🔳 Application Settings | 🔳 ControlSurface Lumetri | ✅ PF Pixel Format |
| 🔳 Error | 🔳 Async File Reader | 🔳 ControlSurface Marker | ✅ PF Source Settings |
| 🔳 Export Audio Param | 🔳 Async Operation | 🔳 ControlSurface Mixer | ✅ PF Transition |
| 🔳 Export Standard Param | 🔳 Export File | 🔳 ControlSurface Transport | ✅ PF Utility |
| 🔳 ExportController | 🔳 Export Info | 🔳 ControlSurfaceHost | ✅ Opaque Effect Data |
| 🔳 File Registration | 🔳 Export Param | 🔳 ControlSurfaceHost Command | 🔳 Captioning |
| 🔳 Image Processing | 🔳 Export Progress | 🔳 ControlSurfaceHost Lumetri | 🔳 Effect Stream Label |
| 🔳 Legacy | 🔳 Exporter Utility | 🔳 ControlSurfaceHost Marker | 🔳 FlashCueMarkerData |
| 🔳 Media Accelerator | ✅ GPU Device | 🔳 ControlSurfaceHost Mixer | 🔳 Importer File Manager |
| ✅ Memory Manager | ✅ GPU Image Processing | 🔳 ControlSurfaceHost Transport | 🔳 Marker |
| 🔳 Palette | 🔳 Playmod Immersive Video | 🔳 ControlSurfacePlugin | |
| 🔳 Pixel Format | 🔳 Playmod Overlay | 🔳 String | |
| 🔳 Playmod Audio | 🔳 Sequence Audio | ||
| 🔳 Playmod Device Control | ✅ Sequence Info | ||
| ✅ PPix | 🔳 Sequence Render | ||
| ✅ PPix 2 | 🔳 Smart Rendering | ||
| 🔳 PPix Cache | 🔳 String | ||
| 🔳 PPix Creator | 🔳 Transmit Invocation | ||
| 🔳 PPix Creator 2 | ✅ Video Segment | ||
| 🔳 RollCrawl | 🔳 Video Segment Render | ||
| 🔳 Threaded Work | |||
| ✅ Time | |||
| ✅ Window |
Contributing / Help Wanted
- Wrap missing suites (see tables above).
- Add more examples & docs.
- Improve error handling (e.g.
color-eyre).
License
Licensed under Apache-2.0 or BSD-3-Clause or MIT or Zlib at your option.