/** * This script will render between markers * * Written By: Edward Troxel * www.jetdv.com/tts * Modified: 05-29-2003 **/ import System; import System.Text; import System.IO; import System.Windows.Forms; import System.Object; import SonicFoundry.Vegas; // here are some default variables for the GUI. //Path names must use "\\" to indicate a standard path "\" //so, defaultBasePath refers to D:\renders\ var defaultBasePath = "D:\\vmedia\\"; // set this to true if you want to allow files to be overwritten var overwriteExistingFiles = false; try { var mrkEnum = new Enumerator(Vegas.Project.Regions); var zeroMark = new Timecode(0); var PrevMark = zeroMark; var currMark = zeroMark; var SubClipNum = 1; var renderStart : Timecode; var totalLength = Vegas.Project.Length; var renderLength : Timecode; var renderer = FindRenderer(/Video for Windows/); if (null == renderer) throw "failed to find renderer"; var template = FindRenderTemplate(renderer, /NTSC DV/); if (null == template) throw "failed to find template"; //Go through the list of Markers while (!mrkEnum.atEnd()) { currMark = Region(mrkEnum.item()).Position; renderStart = currMark; renderLength = Region(mrkEnum.item()).Length; DoRender(defaultBasePath + "test" + SubClipNum + ".AVI", renderer, template, renderStart, renderLength); SubClipNum++; mrkEnum.moveNext(); } } catch (e) { MessageBox.Show(e); } // perform the render. The Render method returns a member of the // RenderStatus enumeration. If it is anything other than OK, exit // the loops. This will throw an error message string if the render // does not complete successfully. function DoRender(fileName, rndr, rndrTemplate, start, length) { // make sure the file does not already exist if (!overwriteExistingFiles && File.Exists(fileName)) { throw "File already exists: " + fileName; } // perform the render. The Render method returns // a member of the RenderStatus enumeration. If // it is anything other than OK, exit the loops. var status = Vegas.Render(fileName, rndrTemplate, start, length); // if the render completed successfully, just return if (status == RenderStatus.Complete) return; // if the user canceled, throw out a special message that won't be // displayed. if (status == RenderStatus.Canceled) { var cancelMsg = new String("User canceled"); cancelMsg.skipMessageBox = true; throw cancelMsg; } // if the render failed, throw out a detailed error message. var msg : StringBuilder = new StringBuilder("Render failed:\n"); msg.Append("\n file name: "); msg.Append(fileName); msg.Append("\n Renderer: "); msg.Append(rndr.FileTypeName); msg.Append("\n Template: "); msg.Append(rndrTemplate.Name); msg.Append("\n Start Time: "); msg.Append(start.ToString()); msg.Append("\n Length: "); msg.Append(length.ToString()); throw msg; } function FindRenderer(rendererRegExp : RegExp) : Renderer { var rendererEnum : Enumerator = new Enumerator(Vegas.Renderers); while (!rendererEnum.atEnd()) { var renderer : Renderer = Renderer(rendererEnum.item()); if (null != renderer.FileTypeName.match(rendererRegExp)) { return renderer; } rendererEnum.moveNext(); } return null; } function FindRenderTemplate(renderer : Renderer, templateRegExp : RegExp) : RenderTemplate { var templateEnum : Enumerator = new Enumerator(renderer.Templates); while (!templateEnum.atEnd()) { var renderTemplate : RenderTemplate = RenderTemplate(templateEnum.item()); if (null != renderTemplate.Name.match(templateRegExp)) { return renderTemplate; } templateEnum.moveNext(); } return null; }