/** * This script can be used to queue up multiple Vegas project files * to be rendered. * * Revision Date: May. 07, 2003 **/ import System.IO; import System.Windows.Forms; import Sony.Vegas; // Modify the following two lines to suit you needs for the output // format. var rendererRE = /Video for Windows/; var templateRE = /NTSC DV/; // Set this to a valid out directory or set it to null if you want the // output files to be created in the same directory as their project // file. var defaultOutputDir = null; // Set the following variable to true if you want to allow the script // to overrwite existing rendered output files. var allowFileOverwrites = false; try { if ((null != defaultOutputDir) && !Directory.Exists(defaultOutputDir)) throw "output directory does not exist: " + defaultOutputDir; // find the renderer and template var renderer : Renderer = FindRenderer(rendererRE); if (null == renderer) throw "failed to find renderer"; var renderTemplate :RenderTemplate = FindRenderTemplate(renderer, templateRE); if (null == renderTemplate) throw "failed to find render template"; // get file name extension that will be appended to each output file var rendererExt = renderer.FileExtension.substring(1); // prompt user for the list of project files to be rendererd. var renderQueue = new Array(); var queueIndex = 0 while (true) { var nextVeg = ShowOpenFileDialog("Vegas Projects (*.veg)|*.veg", "Queue Project File (cancel to begin)", null); if (null == nextVeg) { break; } renderQueue[queueIndex] = nextVeg; queueIndex++; } // for each project file in the queue... var renderIndex = 0 while (renderIndex < queueIndex) { // open the next project var vegFilename = renderQueue[renderIndex]; if (!Vegas.OpenProject(vegFilename)) { throw "failed to open project file: " + vegFilename; } // compute the output directory var outputDir; if (null == defaultOutputDir) { outputDir = Path.GetDirectoryName(vegFilename); } else { outputDir = defaultOutputDir; } // create the output file name var outputName = Path.GetFileNameWithoutExtension(vegFilename); var outputFilename = outputDir + Path.DirectorySeparatorChar + outputName + rendererExt; if ((!allowFileOverwrites) && File.Exists(outputFilename)) throw "file already exists: " + outputFilename; // perform the render var renderStatus = Vegas.Render(outputFilename, renderTemplate); if (RenderStatus.Complete != renderStatus) throw "failed to complete render: " + outputFilename; renderIndex++; } } catch (e) { MessageBox.Show(e); } // an example filter: "PNG File (*.png)|*.png|JPEG File (*.jpg)|*.jpg" function ShowOpenFileDialog(filter, title, defaultFilename) { var openFileDialog = new OpenFileDialog(); if (null == filter) { filter = "All Files (*.*)|*.*"; } openFileDialog.Filter = filter; if (null != title) openFileDialog.Title = title; openFileDialog.CheckPathExists = true; openFileDialog.AddExtension = true; if (null != defaultFilename) { var initialDir = Path.GetDirectoryName(defaultFilename); if (Directory.Exists(initialDir)) { openFileDialog.InitialDirectory = initialDir; } openFileDialog.DefaultExt = Path.GetExtension(defaultFilename); openFileDialog.FileName = Path.GetFileName(defaultFilename); } if (System.Windows.Forms.DialogResult.OK == openFileDialog.ShowDialog()) { return Path.GetFullPath(openFileDialog.FileName); } else { return null; } } 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 (renderTemplate.Name.match(templateRegExp)) { return renderTemplate; } templateEnum.moveNext(); } return null; }