I've used a variation of the RenderOnMarkers script for a long time (years?) (thanks, Ed!) and thought it had been running right under Vegas 6.
Tonight, under deadline (of course), I'm trying to run it and it's not breaking the renders off at the markers (which are always at the end of each event courtesy of the ThumbnailAtMarker script). It is trying to render all of my events together (which I don't want in this case - I need to render out each individual event to .wmv, .mov and .rm).
Has something changed that I need to adjust for in the script? Here's what I'm using:
/**
* 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 Sony.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 = "C:\\TT400Photos\\";
// set this to true if you want to allow files to be overwritten
var overwriteExistingFiles = false;
try {
var mrkEnum = new Enumerator(Vegas.Project.Markers);
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(/Windows Media Video V9/);
if (null == renderer)
throw "failed to find renderer";
var template = FindRenderTemplate(renderer, /512 Kbps Video/);
if (null == template)
throw "failed to find template";
var renderer2 = FindRenderer(/RealMedia 9/);
if (null == renderer)
throw "failed to find renderer";
var template2 = FindRenderTemplate(renderer2, /450 Kbps Video for 512K DSL or Cable/);
if (null == template)
throw "failed to find template";
var renderer3 = FindRenderer(/QuickTime 6/);
if (null == renderer)
throw "failed to find renderer";
var template3 = FindRenderTemplate(renderer3, /512 Kbps Video/);
if (null == template)
throw "failed to find template";
//Go through the list of Markers
while (!mrkEnum.atEnd()) {
currMark = Marker(mrkEnum.item()).Position;
renderStart = PrevMark;
renderLength = currMark - PrevMark;
DoRender(defaultBasePath + "WM9_512k_#" + SubClipNum + ".wmv", renderer, template, renderStart, renderLength);
DoRender(defaultBasePath + "RM8_512k_#" + SubClipNum + ".rm", renderer2, template2, renderStart, renderLength);
DoRender(defaultBasePath + "QT6_512k_#" + SubClipNum + ".mov", renderer3, template3, renderStart, renderLength);
PrevMark = currMark
SubClipNum++;
mrkEnum.moveNext();
}
// Do the final clip
renderStart = PrevMark;
renderLength = totalLength - PrevMark;
DoRender(defaultBasePath + "WM9_512k_#" + SubClipNum + ".wmv", renderer, template, renderStart, renderLength);
DoRender(defaultBasePath + "RM8_512k_#" + SubClipNum + ".rm", renderer2, template2, renderStart, renderLength);
DoRender(defaultBasePath + "QT6_512k_#" + SubClipNum + ".mov", renderer3, template3, renderStart, renderLength);
} 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;
}
I'm using Vegas 6.0c.
Rick
Tonight, under deadline (of course), I'm trying to run it and it's not breaking the renders off at the markers (which are always at the end of each event courtesy of the ThumbnailAtMarker script). It is trying to render all of my events together (which I don't want in this case - I need to render out each individual event to .wmv, .mov and .rm).
Has something changed that I need to adjust for in the script? Here's what I'm using:
/**
* 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 Sony.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 = "C:\\TT400Photos\\";
// set this to true if you want to allow files to be overwritten
var overwriteExistingFiles = false;
try {
var mrkEnum = new Enumerator(Vegas.Project.Markers);
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(/Windows Media Video V9/);
if (null == renderer)
throw "failed to find renderer";
var template = FindRenderTemplate(renderer, /512 Kbps Video/);
if (null == template)
throw "failed to find template";
var renderer2 = FindRenderer(/RealMedia 9/);
if (null == renderer)
throw "failed to find renderer";
var template2 = FindRenderTemplate(renderer2, /450 Kbps Video for 512K DSL or Cable/);
if (null == template)
throw "failed to find template";
var renderer3 = FindRenderer(/QuickTime 6/);
if (null == renderer)
throw "failed to find renderer";
var template3 = FindRenderTemplate(renderer3, /512 Kbps Video/);
if (null == template)
throw "failed to find template";
//Go through the list of Markers
while (!mrkEnum.atEnd()) {
currMark = Marker(mrkEnum.item()).Position;
renderStart = PrevMark;
renderLength = currMark - PrevMark;
DoRender(defaultBasePath + "WM9_512k_#" + SubClipNum + ".wmv", renderer, template, renderStart, renderLength);
DoRender(defaultBasePath + "RM8_512k_#" + SubClipNum + ".rm", renderer2, template2, renderStart, renderLength);
DoRender(defaultBasePath + "QT6_512k_#" + SubClipNum + ".mov", renderer3, template3, renderStart, renderLength);
PrevMark = currMark
SubClipNum++;
mrkEnum.moveNext();
}
// Do the final clip
renderStart = PrevMark;
renderLength = totalLength - PrevMark;
DoRender(defaultBasePath + "WM9_512k_#" + SubClipNum + ".wmv", renderer, template, renderStart, renderLength);
DoRender(defaultBasePath + "RM8_512k_#" + SubClipNum + ".rm", renderer2, template2, renderStart, renderLength);
DoRender(defaultBasePath + "QT6_512k_#" + SubClipNum + ".mov", renderer3, template3, renderStart, renderLength);
} 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;
}
I'm using Vegas 6.0c.
Rick