HDV to SD pan/crop script

johnmeyer wrote on 1/16/2006, 10:19 AM
/** 
* This script assigns the HDV crop preset to every event on the selected timeline
* but only if no pan crop keyframe has been already been assigned.
* It assumes a project setting of 1440 x 1080 (i.e., it is "hard-wired" for 1440x1080).
*
* Copyright 2006 - John H. Meyer
*
**/

import System;
import System.Collections;
import System.Text;
import System.IO;
import System.Drawing;
import System.Windows.Forms;
import Sony.Vegas;
var evnt : TrackEvent;

try {

//Find the selected event
var track = FindSelectedTrack();
if (null == track) // Must select a track
throw "no selected track";
var eventEnum = new Enumerator(track.Events);
if (track.IsVideo()) { // Track must be a video track
while (!eventEnum.atEnd()) {
evnt = TrackEvent(eventEnum.item());
var vevnt = VideoEvent(evnt);
var keyframes = vevnt.VideoMotion.Keyframes; // Get keyframe list for this event
var keyframe = keyframes[0]; // First keyframe
// Check if there is only one keyframe, and if that keyframe is set to other than project property dimensions
if ( (keyframes.Count <= 1) && (keyframe.TopLeft.Y == 0) && (keyframe.TopLeft.X==0) && (keyframe.BottomRight.X==1440) && (keyframe.BottomRight.Y == 1080) ){
var myKeyframe = new VideoMotionBounds(keyframe.TopLeft, keyframe.TopRight, keyframe.BottomRight, keyframe.BottomLeft);
var AdjY = 0; // Parameters to get SD crop from HD Crop
var AdjX = 167.72175;

//Resize for SD
myKeyframe.TopLeft.Y = AdjY;
myKeyframe.TopRight.Y = AdjY;
myKeyframe.BottomLeft.Y = 1080 + AdjY;
myKeyframe.BottomRight.Y = 1080 + AdjY;
myKeyframe.TopLeft.X = AdjX;
myKeyframe.TopRight.X = 1104.5565 + AdjX;
myKeyframe.BottomLeft.X = AdjX;
myKeyframe.BottomRight.X = 1104.5565 + AdjX;

// Actually make the change to set the keyframe to SD cropping
keyframe.Bounds = myKeyframe;

} //End if keyframes
eventEnum.moveNext();
} // End While eventEnum
} // End If track.IsVideo

else {
MessageBox.Show("You must select a video track");
}


} catch (e) {
MessageBox.Show(e);
}



function FindSelectedTrack() : Track {
var trackEnum = new Enumerator(Vegas.Project.Tracks);
while (!trackEnum.atEnd()) {
var track : Track = Track(trackEnum.item());
if (track.Selected) {
return track;
}
trackEnum.moveNext();
}
return null;
}

Comments

No comments yet - be the first to write a comment...