6 Replies Latest reply on Jan 20, 2017 4:34 PM by justin2taylor

    Master List of Functions / Hierarchy

    justin2taylor Level 1

      I've done some coding in the past, but I'm new to Premiere Pro panels. Wondering if there is some sort of master document or XSD that lists all the functions and hierarchies so I know where to find objects and operations.  Extend script doesn't seem to suggest very much.

       

      Thanks,

       

      Justin

        • 1. Re: Master List of Functions / Hierarchy
          Bruce Bullis Adobe Employee

          There is no master document. The best place to see/learn the available ExtendScript API is in the ExtendScript Toolkit data browser.

           

          PProPanel contains vestigial documentation of the available functions, and (better!) demonstrates usage of nearly all of them.

          • 2. Re: Master List of Functions / Hierarchy
            justin2taylor Level 1

            Thanks, the Data Browser is exactly what I'm looking for. More specifically, I was trying to customize the "Render Active Sequence in AME" function into a new function I'm making, however I keep getting the error message "Could not find output preset." I tried adding the output .EPR preset to the code, but think I'm putting it in the wrong place. If you have any ideas, I'd really appreciate it.

            Thanks!

             

             

            -------------Function Listed Below (Bolded the line in question)------------------

             

                renderWP : function(outputPresetPath) {

             

            app.enableQE();

            var activeSequence = qe.project.getActiveSequence();  // we use a QE DOM function, to determine the output extension.

            if (activeSequence) {

            app.encoder.launchEncoder(); // This can take a while; let's get the ball rolling.

             

            /*var timeSecs = activeSequence.CTI.secs; // Just for reference, here's how to access the CTI

            var timeFrames = activeSequence.CTI.frames; // position, for the active sequence.

            var timeTicks = activeSequence.CTI.ticks;

            var timeString = activeSequence.CTI.timecode;

             

            var seqInPoint = app.project.activeSequence.getInPoint(); // new in 9.0

            var seqOutPoint = app.project.activeSequence.getOutPoint(); // new in 9.0*/

             

            var projPath   = new File(app.project.path);

            var outputPath  = Folder("E:\Wheel Pros\Wheel Videos\09 Exports");

             

            if ((outputPath) && projPath.exists){

            var outPreset  = new File("C:\Users\Justin\Documents\Adobe\Adobe Media Encoder\11.0\Presets\WP1080ytHDmrq.epr");

                                if (outPreset.exists === true){

            var outputFormatExtension   = activeSequence.getExportFileExtension(outPreset.fsName);

            if (outputFormatExtension){

             

            var outputFilename = activeSequence.name + '.' + outputFormatExtension;

             

            var fullPathToFile = outputPath.fsName +

            $._PPP_.getSep() +

            activeSequence.name +

            "." +

            outputFormatExtension;

             

            var outFileTest = new File(fullPathToFile);

             

            if (outFileTest.exists){

            var destroyExisting = confirm("A file with that name already exists; overwrite?", false, "Are you sure...?");

            if (destroyExisting){

            outFileTest.remove();

            outFileTest.close();

            }

            }

             

            app.encoder.bind('onEncoderJobComplete', $._PPP_.onEncoderJobComplete);

            app.encoder.bind('onEncoderJobError', $._PPP_.onEncoderJobError);

            app.encoder.bind('onEncoderJobProgress', $._PPP_.onEncoderJobProgress);

            app.encoder.bind('onEncoderJobQueued', $._PPP_.onEncoderJobQueued);

             

            // use these 0 or 1 settings to disable some/all metadata creation.

             

            app.encoder.setSidecarXMPEnabled(0);

            app.encoder.setEmbeddedXMPEnabled(0);

             

                        // For reference, here's how to export from within PPro (blocking further user interaction).

                     

                        // activeSequence.exportAsMediaDirect(fullPathToFile,  outPreset.fsName, app.encoder.ENCODE_WORKAREA);

             

            var jobID = app.encoder.encodeSequence( app.project.activeSequence,

            fullPathToFile,

            outPreset.fsName,

            app.encoder.ENCODE_WORKAREA,

            1);    // Remove from queue upon successful completion?              

            $._PPP_.message('jobID = ' + jobID);

             

            outPreset.close();

            }

            } else {

            alert("Could not find output preset.");

            }

            } else {

            alert("Could not find/create output path.");

            }

            projPath.close();

            } else {

            alert("No active sequence.");

            }

             

            },

            • 3. Re: Master List of Functions / Hierarchy
              Bruce Bullis Adobe Employee

              First, in your output preset path, you'll need to escape those backslashes ('\\', not '\'):

               

              new File("C:\\Users\\Justin\\Documents\\Adobe\\Adobe Media Encoder\\11.0\\Presets\\WP1080ytHDmrq.epr");

               

              Second, you're running into an error I recently introduced into PProPanel; namely, not passing the output preset path INTO the render function.

               

               

               

              Fix, by replacing the 'guts' of the render() function with the following:

               

              var filterString = "";

                if (Folder.fs == 'Windows'){

                filterString = "EPR files:*.epr";

                }

               

                var outputPresetPath = File.openDialog ( "Choose output preset", // title

                filterString, // filter available files?

                false); // allow multiple?

               

                      app.enableQE();

                var activeSequence = qe.project.getActiveSequence(); // we use a QE DOM function, to determine the output extension.

                if (activeSequence) {

                app.encoder.launchEncoder(); // This can take a while; let's get the ball rolling.

               

               

                var timeSecs = activeSequence.CTI.secs; // Just for reference, here's how to access the CTI

                var timeFrames = activeSequence.CTI.frames; // (Current Time Indicator), for the active sequence.

                var timeTicks = activeSequence.CTI.ticks;

                var timeString = activeSequence.CTI.timecode;

               

               

                var seqInPoint = app.project.activeSequence.getInPoint(); // new in 9.0

                var seqOutPoint = app.project.activeSequence.getOutPoint(); // new in 9.0

               

               

                var projPath   = new File(app.project.path);

                var outputPath  = Folder.selectDialog("Choose the output directory");

               

               

                if ((outputPath) && projPath.exists){

                var outPreset = new File(outputPresetPath);

                if (outPreset.exists === true){

                var outputFormatExtension = activeSequence.getExportFileExtension(outPreset.fsName);

                if (outputFormatExtension){

               

               

                var outputFilename = activeSequence.name + '.' + outputFormatExtension;

               

               

                var fullPathToFile = outputPath.fsName +

                $._PPP_.getSep() +

                activeSequence.name +

                "." +

                outputFormatExtension;

               

               

                var outFileTest = new File(fullPathToFile);

               

               

                if (outFileTest.exists){

                var destroyExisting = confirm("A file with that name already exists; overwrite?", false, "Are you sure...?");

                if (destroyExisting){

                outFileTest.remove();

                outFileTest.close();

                }

                }

               

               

                app.encoder.bind('onEncoderJobComplete', $._PPP_.onEncoderJobComplete);

                app.encoder.bind('onEncoderJobError', $._PPP_.onEncoderJobError);

                app.encoder.bind('onEncoderJobProgress', $._PPP_.onEncoderJobProgress);

                app.encoder.bind('onEncoderJobQueued', $._PPP_.onEncoderJobQueued);

               

               

                // use these 0 or 1 settings to disable some/all metadata creation.

               

               

                app.encoder.setSidecarXMPEnabled(0);

                app.encoder.setEmbeddedXMPEnabled(0);

               

               

                /*

               

               

                For reference, here's how to export from within PPro (blocking further user interaction).

                  

                   activeSequence.exportAsMediaDirect( fullPathToFile, 

                  outPreset.fsName,

                  app.encoder.ENCODE_WORKAREA);

               

                Bonus: Here's how to compute a sequence's duration, in ticks. 254016000000 ticks/second.

               

               

                var duration = app.project.activeSequence.end - app.project.activeSequence.zeroPoint;

               

                */

               

                var jobID = app.encoder.encodeSequence( app.project.activeSequence,

                fullPathToFile,

                outPreset.fsName,

                app.encoder.ENCODE_WORKAREA,

                1);   // Remove from queue upon successful completion?

                $._PPP_.message('jobID = ' + jobID);

                outPreset.close();

                }

                } else {

                alert("Could not find output preset.");

                }

                } else {

                alert("Could not find/create output path.");

                }

                projPath.close();

                } else {

                alert("No active sequence.");

                }

              • 4. Re: Master List of Functions / Hierarchy
                Stan Jones Adobe Community Professional & MVP

                Just a thank you for  your good work. Not sure where else to post it. I love the frank, to the point, responses I've seen from you and Zack over the years. "The problem I introduced..." lol.

                 

                Just always very helpful to users.

                1 person found this helpful
                • 5. Re: Master List of Functions / Hierarchy
                  Bruce Bullis Adobe Employee

                  Thanks very much, Stanley—your post brightened an otherwise dreary afternoon.

                   

                  Zac and I have been supporting Adobe's video partners for a while now (between us, 38 years—yikes!). We very much appreciate and enjoy the sense of community we've been lucky enough to encounter (and on good days, engender). I find working together with partners and customers to solve issues, build workflows and enable creative work that wasn't before possible, deeply rewarding.

                   

                  Many partners build their livelihoods around our products; THANK YOU PARTNERS! Trust is critical to such relationships, and honest conversations (even about embarrassing 'rookie move' bugs like the one I recently introduced, above...<sigh>) help build that trust.

                   

                  Happy Friday, everyone!

                   

                   

                  -bbb

                  • 6. Re: Master List of Functions / Hierarchy
                    justin2taylor Level 1

                    Thanks Bruce, the forward slashes were my issue! Works great now.