Getting Started in Premiere Pro Plugin Development?

New Here ,
Oct 28, 2017

Copy link to clipboard

Copied

Hello! I am a DSLR Video Producer & Photographer out of the PNW working with an employer that has the possibility of an improved workflow. If only I could develop a Premiere Pro Plugin to fit their needs. Alas, I am unable to find any viable beginner information on the matter. I've looked over the SDK documents, I've also looked on YouTube, Forums (including here) and have yet to find anything that will help me get from 0 to something rather than 0 to nothing. I don't even know how to begin to get started. I hope to make some videos myself on this matter due to my struggle, but I need to be helped before I can help others. I hope that I can be given some information to be put in the right direction. I am just clueless, even after everything I've looked at. I've seen everything from You can use any development program to develop with the SDK to You develop with HTML5, Javascript, and CSS or something close to the sort. Yet, no simple information for a beginner myself to just get started. Please, help??

What I'm trying to do: Basic automated animation for photos in Premiere (kind-of like a slideshow). I'm trying develop a custom plugin for Premiere Pro that takes out the handy work of setting: position and scale keyframe at position1, animate a basic movement with position and scale to position2 while keeping a person or persons face or faces as the focus. Possible detection of photo width/height for proper scale to cover monitor viewport. Possible anchor point movement/use to allow custom movement to pull/push towards the desired point in photo.

I love Adobe products and have been a CC subscriber for years. I am more than willing to clear anything up if needed. I hope to hear from anyone willing to help soon.

Thank you.

TOPICS
Premiere Pro SDK, Scripting, SDK

Views

6.6K

Likes

Translate

Translate

Report

Report
Reply
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more

1 Correct Answer

Adobe Employee , Oct 30, 2017
Bruce Bullis Adobe Employee , Oct 30, 2017
One must be a capable JavaScript-er, and ExtendScript-er, to take advantage of the APIs available to panels; C++, for plug-ins.None of what you describe, above, is simple, from within a PPro panel; an After Effects panel might be more straightforward. Specifically: while changing position/rotation/scale is possible, there's nothing in the API to do the image analysis necessary to keep people or faces in focus. Unless you have some sort of image processing library of your own...?We're happy to he...

Likes

Translate

Translate
Jump to answer Jump to answer
Adobe Employee ,
Oct 30, 2017

Copy link to clipboard

Copied

One must be a capable JavaScript-er, and ExtendScript-er, to take advantage of the APIs available to panels; C++, for plug-ins.

None of what you describe, above, is simple, from within a PPro panel; an After Effects panel might be more straightforward. Specifically: while changing position/rotation/scale is possible, there's nothing in the API to do the image analysis necessary to keep people or faces in focus. Unless you have some sort of image processing library of your own...?

We're happy to help with questions around Adobe's APIs, but we aren't a good resource for learning JavaScript, or programming in general.

Best available starting point for PPro panels = the PProPanel sample, from GitHub. If you work through the readme, you'll have a system ready to build and debug panels, and working sample code that demonstrates PPro's ExtendScript APIs.

https://github.com/Adobe-CEP/Samples/blob/master/PProPanel/ReadMe.md

Likes

Translate

Translate

Report

Report
Reply
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
jkmg AUTHOR
New Here ,
Oct 30, 2017

Copy link to clipboard

Copied

I know Javascript. I suppose I forgot to mention I know how to code. I'm fluent in HTML, CSS, PHP, MySQL, Javascript, jQuery and AJAX. I just don't know (structurally) where to even begin to begin... What is the difference between a Panel and a Plugin?? Please feel free to send any documentation my way that may be helpful. Sorry for any confusion. I'm just trying to understand. Thank you.

Likes

Translate

Translate

Report

Report
Reply
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
Adobe Employee ,
Oct 31, 2017

Copy link to clipboard

Copied

Panels = web pages, hosted in PPro's UI, which can also 1. access the local file system and 2. drive PPro via ExtendScript.

Best place to start = PProPanel readme, which walks you through setting up a panel dev system.

While CEP HTML Test Panel shows off all the fun stuff you can do at the JavaScript level, PProPanel is pretty exhaustive in its usage of PPro's ExtendScript API.

Here's a video I made showing how to debug panels at both the JavaScript and ExtendScript levels.

Work through the readme, play with panels in your debuggers, and feel free to ask questions.

Likes

Translate

Translate

Report

Report
Reply
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
New Here ,
Jan 19, 2020

Copy link to clipboard

Copied

Hello Bruce, can you still share your demo video ?

Likes

Translate

Translate

Report

Report
Reply
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
Engaged ,
Oct 31, 2017

Copy link to clipboard

Copied

jkmginger  wrote

Please feel free to send any documentation my way that may be helpful.

You may have already seen it but I'd highly recommend looking over the CEP 8 HTML Extension Cookbook. It does a good job of defining the environmentS that you have to work with in Adobe's CEP system. Yes, that's an emphasized plural. Here are the main points to help get you oriented:

  • Your UI should be built as a simple webpage/webapp. The context is a version of the Chromium Embedded Framework. With the latest CEP 8 (e.g. CC 2018 applications), you will be running in an equivalent of Chrome 57. This is why you use the Chrome browser to debug as Bruce shows off.
    • You can write JavaScript using any API that Chrome 57 can handle for your UI.
  • Adobe Application Control Uses ExtendScript. The documentation for ExtendScript is terrible. It effectively goes unexplained prior to being used in the documentation. Here are the important things for you to know about it:
    • ExtendScript is nothing more than ECMAScript 3 with some custom application-specific APIs. ECMAScript 3 is the core of what we know as "JavaScript in the browser". It defines all the core functionality and APIs that every "JavaScript"-compatible language supports. One way to think of this is that JavaScript is ECMAScript with some extra browser-specific APIs tacked on. NodeJS is the same thing, except that the NodeJS API adds server-specific APIs, rather than DOM-handling stuff like the browsers. ExtendScript is the same thing again, albeit for Adobe's applications.
    • ExtendScript runs in a separate context from the UI JavaScript. There is a fence over which you need to throw commands and then receive callbacks. The documentation does a decent job describing this situation.
  • You use ExtendScript Toolkit​ (ESTK) to access ExtendScript documentation and debugging. ESTK allows you to attach to a running Adobe Application (e.g. Premiere Pro 2018) and then "run" scripts in the application's ExtendScript context. You can set breakpoints and check out the global environment this way. More important information:
    • The Object Model Viewer (a component of ESTK) allows you to look at API documentation. The core ExtendScript APIs are all described there. This includes the ECMAScript 3 APIs and all additions Adobe made for the "common ExtendScript base". Adobe further adds Application-specific APIs to each application's ExtendScript context - hooks that you can use to control the specific application. These are the API's that @bbb (Bruce Bullis?) refers to with the PProPanel's 'exhaustive use PPro's ExtendScript API'.
      • The Premiere Pro API documentation in ESTK is incomplete. Ask on the forums if you're looking for something and don't see it.
      • The Premiere Pro API documentation in ESTK has zero comments - it merely shows you the names of some of the APIs that exist and the types of variables they expect.
    • The ESTK is starting to show its age, but bear with it - it's currently the only way to debug ExtendScript scripts.
  • There is only one ExtendScript context. The entire Adobe application instance shares a single ExtendScript context. When you first attach to an otherwise-empty project in Adobe Premiere Pro, you'll notice that the global environment contains definitions for JSON and JSON3. If you dig into it you'll find that Adobe's startup UI is actually a panel. It and a few other panels auto-load and will add support for JSON to the environment in a way that is conducive for that panel. You should not rely on these in the long run, but you are probably safe to use them. The thing to note is that if you simply say "var x = 5;" at the top level (i.e. not in a function call or block wrapped in parenthesis) in a "temporary" script, that variable will probably persist for the duration of the application's run (e.g. in Premiere Pro, it would continue to exist until you close Premiere Pro).
    • Panel JavaScript does not have this "global context" issue - each panel gets its own context.
  • The Panels Can Use NodeJS APIs. Adobe doesn't simply include Chromium Embedded Framework for their panels, but a version that also supports NodeJS (Adobe integrates NW.js). By entering a special command in your panel manifest, you enable NodeJS JavaScript APIs. Depending on the flags you set, the NodeJS context is either mixed into the browser context or separate.

The above effectively represents the series of epiphanies I had whilst figuring out CEP panel development. I hope you can further benefit from them.

Likes

Translate

Translate

Report

Report
Reply
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
Community Beginner ,
Aug 28, 2018

Copy link to clipboard

Copied

Hey Bruce, I'm looking to hire a programmer to make an extension for Adobe Premiere but my main question is what steps do I need to take legally before getting involved with a programmer? Like a Patent Attorney or something? I'm just curious as the steps I need to take to secure my plug-in idea before starting.

Likes

Translate

Translate

Report

Report
Reply
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
Adobe Employee ,
Aug 28, 2018

Copy link to clipboard

Copied

Sorry, I can provide no legal advice.

Likes

Translate

Translate

Report

Report
Reply
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
New Here ,
Jul 23, 2019

Copy link to clipboard

Copied

Vincentg, I'm curious about hiring a programmer as well. Did you learn more about the process/ go through with it?

Likes

Translate

Translate

Report

Report
Reply
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
Community Beginner ,
Jan 13, 2021

Copy link to clipboard

Copied

Hi there! A very useful tool to have is the Automator Plus extension. It is a Premiere Pro extension that allows you to assign keyboard shortcuts to any extendscript you find online or have lying around.

Likes

Translate

Translate

Report

Report
Reply
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more