I pieced together a script that reads an XML job file. It renders a scene and moves on to the next entry. For some reason, every so often, Vegas crashes and gives the following message:
Sony Vegas 5.0
Version 5.0d (Build 194)
Exception 0xC0000005 (access violation) READ:0xBC0 IP:0x100F5EB
In Module 'vegas50k.dll' at Address 0x1000000 + 0xF5EB
Thread: VideoRender ID=0xA84 Stack=0x4D0F000-0x4D10000
Registers:
EAX=04d0f498 CS=001b EIP=0100f5eb EFLGS=00010246
EBX=0546ce08 SS=0023 ESP=04d0f470 EBP=04d0f518
ECX=04d0f534 DS=0023 ESI=00000b80 FS=003b
EDX=00000b80 ES=0023 EDI=04d0f534 GS=0000
Bytes at CS:EIP:
0100F5EB: DD 46 40 DD 5C 24 28 8D .F@.\$(.
0100F5F3: 4C 24 28 DD 46 48 51 DD L$(.FHQ.
Stack Dump:
04D0F470: 00000000
04D0F474: 00000000
04D0F478: 00000000
04D0F47C: 00000000
04D0F480: 00000000
04D0F484: 00000000
04D0F488: 00000000
04D0F48C: 00000000
04D0F490: 00000001
04D0F494: 001B3070 00150000 + 63070
04D0F498: 00000000
04D0F49C: 3FF00000
04D0F4A0: 00000000
04D0F4A4: 00000000
04D0F4A8: 00000000
04D0F4AC: 00000000
> 04D0F51C: 00635EB0 00400000 + 235EB0 (vegas50.exe)
04D0F520: 00000B80
04D0F524: 04D0F534 04C10000 + FF534
04D0F528: 00000000
04D0F52C: 0546CE08 051E0000 + 28CE08
> 04D0F5B4: 00635F08 00400000 + 235F08 (vegas50.exe)
04D0F5B8: 0546CE08 051E0000 + 28CE08
04D0F5BC: 04D0F5D0 04C10000 + FF5D0
04D0F5C0: 05341760 051E0000 + 161760
04D0F5C4: 02228DF0 021F0000 + 38DF0
> 04D0F650: 00636899 00400000 + 236899 (vegas50.exe)
04D0F654: 02228D30 021F0000 + 38D30
04D0F658: 04D0F6C0 04C10000 + FF6C0
04D0F65C: 02228CC8 021F0000 + 38CC8
04D0F660: 00000000
> 04D0F740: 00625CED 00400000 + 225CED (vegas50.exe)
04D0F744: 02228CC8 021F0000 + 38CC8
04D0F748: 05341760 051E0000 + 161760
04D0F74C: 04D0F868 04C10000 + FF868
04D0F750: 00000000
> 04D0F780: 00626365 00400000 + 226365 (vegas50.exe)
> 04D0F7DC: 00652EDA 00400000 + 252EDA (vegas50.exe)
- - -
04D0FFF0: 00000000
04D0FFF4: 0056B360 00400000 + 16B360 (vegas50.exe)
04D0FFF8: 032F5BA0 03180000 + 175BA0
04D0FFFC: 00000000
This occurs after a few renders. It always happens right at the end of a render, not in the middle of one. If anyone has any insight as to why this would happen, I would sure appreciate it.
I will post the code I am using here. The problem most likely lies in my bad coding. Thanks for the help.
function LeadingChars(MyString , ToLead)
{
if ( MyString < 10){
return ToLead + MyString;
}else{
return MyString;
}
}
function DoRender(fileName, rndr, rndrTemplate) {
ValidateFileName(fileName);
var args = new RenderArgs();
args.OutputFile = fileName;
args.RenderTemplate = rndrTemplate;
args.StretchToFill = true;
var status = Vegas.Render(args);
return status;
}
function ValidateFileName(fileName : System.String) {
if (fileName.length > 260)
throw "file name too long: " + fileName;
var illegalCharCount = Path.InvalidPathChars.Length;
var i = 0;
while (i < illegalCharCount) {
if (0 <= fileName.IndexOf(Path.InvalidPathChars[i])) {
throw "invalid file name: " + fileName;
}
i++;
}
}
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;
}
import System;
import System.IO;
import System.Windows.Forms;
import System.Collections;
import Sony.Vegas;
try {
var fso, f1, ts, s;
var ForReading = 1;
var newEvent : VideoEvent = null;
var take : Take = null;
var videoStream = null;
var audioStream = null;
var videoTrack = null;
var audioTrack = null;
var stream = null;
var media : Media = null;
var Mtrack : Track = null;
var ScenePath = null;
var GlintsPath = null;
var ScenesBgPath = null;
var toAdd = null;
var MenuNum = null;
var ScreenNamePath = null;
var dom;
fso = new ActiveXObject("Scripting.FileSystemObject");
dom = new ActiveXObject("msxml2.DOMDocument.3.0");
dom.async = false;
dom.validateOnParse = false;
dom.resolveExternals = false;
dom.load("Q:\\927.xml");
var GenInfoNodes = dom.documentElement.childNodes.item(0).childNodes;
var ScenesNodes = dom.documentElement.childNodes.item(1).childNodes;
var ScreenName = GenInfoNodes.item(2).text;
var DVDTitle = GenInfoNodes.item(3).text;
var BasePath = "D:\\" + ScreenName;
var MenuPath = BasePath + "\\Menus";
var outputPath = BasePath + "\\Sources\\Scenes";
var TotalScenes = ScenesNodes.length;
// SET PROJECT PROPERTIES
Vegas.Project.Video.FieldOrder = VideoFieldOrder.LowerFieldFirst;
Vegas.Project.Video.PixelAspectRatio = "1.333"
Vegas.Project.Video.Height = "1080"
Vegas.Project.Video.Width = "1440"
for(var ScenesCount = 0; ScenesCount < TotalScenes; ScenesCount++){
// Add screenname overlay
var objnew = ScenesNodes.item(ScenesCount).childNodes;
var ScenePath = objnew.item(2).text;
var toFind = "\\";
var theIndex = ScenePath.lastIndexOf(toFind);
var theSource = ScenePath.slice(theIndex + 1 , theIndex + 15);
ScenePath = BasePath + "\\m2ts\\" + theSource
media = new Media(ScenePath);
videoStream = media.Streams[0];
var videoLength = videoStream.Length;
Mtrack = new VideoTrack(0, "Name");
Vegas.Project.Tracks.Add(Mtrack);
var FullScenePath = MenuPath + "\\m2vOverlay.psd";
var media2 = new Media(FullScenePath);
stream = media2.Streams[0];
newEvent = new VideoEvent(new Timecode(0), videoLength);
Mtrack.Events.Add(newEvent);
stream.AlphaChannel = VideoAlphaType.Premultiplied;
stream.PixelAspectRatio = "1.2121";
take = new Take(stream);
newEvent.Takes.Add(take);
Mtrack = new VideoTrack(1, "Scene");
var Atrack = new AudioTrack(2, "SceneAudio");
Vegas.Project.Tracks.Add(Mtrack);
Vegas.Project.Tracks.Add(Atrack);
var videoEvent = new VideoEvent(new Timecode(), videoLength);
Mtrack.Events.Add(videoEvent);
var videoTake = new Take(videoStream);
videoEvent.Takes.Add(videoTake);
audioStream = media.Streams[1];
var audioLength = audioStream.Length;
var audioEvent = new AudioEvent(new Timecode(), audioLength);
Atrack.Events.Add(audioEvent);
var audioTake = new Take(audioStream);
audioEvent.Takes.Add(audioTake);
// BEGIN RENDER CODE
var rendererRegexp = /Wave/;
var templateRegexp = /wav/;
var renderer = FindRenderer(rendererRegexp);
if (null == renderer) {
MessageBox.Show("Failed to find renderer");
}
var renderTemplate = FindRenderTemplate(renderer, templateRegexp);
if (null == renderTemplate) {
MessageBox.Show("Failed to find render template");
}
var newExtension = renderer.FileExtension.substring(1);
var outputFileName = "Scene" + LeadingChars(ScenesCount + 1,"0") + newExtension;
var outputPath2 = Path.Combine(outputPath, outputFileName);
DoRender(outputPath2, renderer, renderTemplate);
// BEGIN RENDER CODE
var rendererRegexp = /MPEG-2/;
var templateRegexp = /RenderM2VScenes/;
var renderer = FindRenderer(rendererRegexp);
if (null == renderer) {
MessageBox.Show("Failed to find renderer");
}
var renderTemplate = FindRenderTemplate(renderer, templateRegexp);
if (null == renderTemplate) {
MessageBox.Show("Failed to find render template");
}
var newExtension = renderer.FileExtension.substring(1);
var outputFileName = "Scene" + LeadingChars(ScenesCount + 1,"0") + newExtension;
var outputPath3 = Path.Combine(outputPath, outputFileName);
DoRender(outputPath3, renderer, renderTemplate);
for (var q = 3 ; q > 0 ; q--){
Vegas.Project.Tracks.Remove(Vegas.Project.Tracks[q - 1]);
}
}
} catch (e) {
MessageBox.Show(e);
}
Sony Vegas 5.0
Version 5.0d (Build 194)
Exception 0xC0000005 (access violation) READ:0xBC0 IP:0x100F5EB
In Module 'vegas50k.dll' at Address 0x1000000 + 0xF5EB
Thread: VideoRender ID=0xA84 Stack=0x4D0F000-0x4D10000
Registers:
EAX=04d0f498 CS=001b EIP=0100f5eb EFLGS=00010246
EBX=0546ce08 SS=0023 ESP=04d0f470 EBP=04d0f518
ECX=04d0f534 DS=0023 ESI=00000b80 FS=003b
EDX=00000b80 ES=0023 EDI=04d0f534 GS=0000
Bytes at CS:EIP:
0100F5EB: DD 46 40 DD 5C 24 28 8D .F@.\$(.
0100F5F3: 4C 24 28 DD 46 48 51 DD L$(.FHQ.
Stack Dump:
04D0F470: 00000000
04D0F474: 00000000
04D0F478: 00000000
04D0F47C: 00000000
04D0F480: 00000000
04D0F484: 00000000
04D0F488: 00000000
04D0F48C: 00000000
04D0F490: 00000001
04D0F494: 001B3070 00150000 + 63070
04D0F498: 00000000
04D0F49C: 3FF00000
04D0F4A0: 00000000
04D0F4A4: 00000000
04D0F4A8: 00000000
04D0F4AC: 00000000
> 04D0F51C: 00635EB0 00400000 + 235EB0 (vegas50.exe)
04D0F520: 00000B80
04D0F524: 04D0F534 04C10000 + FF534
04D0F528: 00000000
04D0F52C: 0546CE08 051E0000 + 28CE08
> 04D0F5B4: 00635F08 00400000 + 235F08 (vegas50.exe)
04D0F5B8: 0546CE08 051E0000 + 28CE08
04D0F5BC: 04D0F5D0 04C10000 + FF5D0
04D0F5C0: 05341760 051E0000 + 161760
04D0F5C4: 02228DF0 021F0000 + 38DF0
> 04D0F650: 00636899 00400000 + 236899 (vegas50.exe)
04D0F654: 02228D30 021F0000 + 38D30
04D0F658: 04D0F6C0 04C10000 + FF6C0
04D0F65C: 02228CC8 021F0000 + 38CC8
04D0F660: 00000000
> 04D0F740: 00625CED 00400000 + 225CED (vegas50.exe)
04D0F744: 02228CC8 021F0000 + 38CC8
04D0F748: 05341760 051E0000 + 161760
04D0F74C: 04D0F868 04C10000 + FF868
04D0F750: 00000000
> 04D0F780: 00626365 00400000 + 226365 (vegas50.exe)
> 04D0F7DC: 00652EDA 00400000 + 252EDA (vegas50.exe)
- - -
04D0FFF0: 00000000
04D0FFF4: 0056B360 00400000 + 16B360 (vegas50.exe)
04D0FFF8: 032F5BA0 03180000 + 175BA0
04D0FFFC: 00000000
This occurs after a few renders. It always happens right at the end of a render, not in the middle of one. If anyone has any insight as to why this would happen, I would sure appreciate it.
I will post the code I am using here. The problem most likely lies in my bad coding. Thanks for the help.
function LeadingChars(MyString , ToLead)
{
if ( MyString < 10){
return ToLead + MyString;
}else{
return MyString;
}
}
function DoRender(fileName, rndr, rndrTemplate) {
ValidateFileName(fileName);
var args = new RenderArgs();
args.OutputFile = fileName;
args.RenderTemplate = rndrTemplate;
args.StretchToFill = true;
var status = Vegas.Render(args);
return status;
}
function ValidateFileName(fileName : System.String) {
if (fileName.length > 260)
throw "file name too long: " + fileName;
var illegalCharCount = Path.InvalidPathChars.Length;
var i = 0;
while (i < illegalCharCount) {
if (0 <= fileName.IndexOf(Path.InvalidPathChars[i])) {
throw "invalid file name: " + fileName;
}
i++;
}
}
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;
}
import System;
import System.IO;
import System.Windows.Forms;
import System.Collections;
import Sony.Vegas;
try {
var fso, f1, ts, s;
var ForReading = 1;
var newEvent : VideoEvent = null;
var take : Take = null;
var videoStream = null;
var audioStream = null;
var videoTrack = null;
var audioTrack = null;
var stream = null;
var media : Media = null;
var Mtrack : Track = null;
var ScenePath = null;
var GlintsPath = null;
var ScenesBgPath = null;
var toAdd = null;
var MenuNum = null;
var ScreenNamePath = null;
var dom;
fso = new ActiveXObject("Scripting.FileSystemObject");
dom = new ActiveXObject("msxml2.DOMDocument.3.0");
dom.async = false;
dom.validateOnParse = false;
dom.resolveExternals = false;
dom.load("Q:\\927.xml");
var GenInfoNodes = dom.documentElement.childNodes.item(0).childNodes;
var ScenesNodes = dom.documentElement.childNodes.item(1).childNodes;
var ScreenName = GenInfoNodes.item(2).text;
var DVDTitle = GenInfoNodes.item(3).text;
var BasePath = "D:\\" + ScreenName;
var MenuPath = BasePath + "\\Menus";
var outputPath = BasePath + "\\Sources\\Scenes";
var TotalScenes = ScenesNodes.length;
// SET PROJECT PROPERTIES
Vegas.Project.Video.FieldOrder = VideoFieldOrder.LowerFieldFirst;
Vegas.Project.Video.PixelAspectRatio = "1.333"
Vegas.Project.Video.Height = "1080"
Vegas.Project.Video.Width = "1440"
for(var ScenesCount = 0; ScenesCount < TotalScenes; ScenesCount++){
// Add screenname overlay
var objnew = ScenesNodes.item(ScenesCount).childNodes;
var ScenePath = objnew.item(2).text;
var toFind = "\\";
var theIndex = ScenePath.lastIndexOf(toFind);
var theSource = ScenePath.slice(theIndex + 1 , theIndex + 15);
ScenePath = BasePath + "\\m2ts\\" + theSource
media = new Media(ScenePath);
videoStream = media.Streams[0];
var videoLength = videoStream.Length;
Mtrack = new VideoTrack(0, "Name");
Vegas.Project.Tracks.Add(Mtrack);
var FullScenePath = MenuPath + "\\m2vOverlay.psd";
var media2 = new Media(FullScenePath);
stream = media2.Streams[0];
newEvent = new VideoEvent(new Timecode(0), videoLength);
Mtrack.Events.Add(newEvent);
stream.AlphaChannel = VideoAlphaType.Premultiplied;
stream.PixelAspectRatio = "1.2121";
take = new Take(stream);
newEvent.Takes.Add(take);
Mtrack = new VideoTrack(1, "Scene");
var Atrack = new AudioTrack(2, "SceneAudio");
Vegas.Project.Tracks.Add(Mtrack);
Vegas.Project.Tracks.Add(Atrack);
var videoEvent = new VideoEvent(new Timecode(), videoLength);
Mtrack.Events.Add(videoEvent);
var videoTake = new Take(videoStream);
videoEvent.Takes.Add(videoTake);
audioStream = media.Streams[1];
var audioLength = audioStream.Length;
var audioEvent = new AudioEvent(new Timecode(), audioLength);
Atrack.Events.Add(audioEvent);
var audioTake = new Take(audioStream);
audioEvent.Takes.Add(audioTake);
// BEGIN RENDER CODE
var rendererRegexp = /Wave/;
var templateRegexp = /wav/;
var renderer = FindRenderer(rendererRegexp);
if (null == renderer) {
MessageBox.Show("Failed to find renderer");
}
var renderTemplate = FindRenderTemplate(renderer, templateRegexp);
if (null == renderTemplate) {
MessageBox.Show("Failed to find render template");
}
var newExtension = renderer.FileExtension.substring(1);
var outputFileName = "Scene" + LeadingChars(ScenesCount + 1,"0") + newExtension;
var outputPath2 = Path.Combine(outputPath, outputFileName);
DoRender(outputPath2, renderer, renderTemplate);
// BEGIN RENDER CODE
var rendererRegexp = /MPEG-2/;
var templateRegexp = /RenderM2VScenes/;
var renderer = FindRenderer(rendererRegexp);
if (null == renderer) {
MessageBox.Show("Failed to find renderer");
}
var renderTemplate = FindRenderTemplate(renderer, templateRegexp);
if (null == renderTemplate) {
MessageBox.Show("Failed to find render template");
}
var newExtension = renderer.FileExtension.substring(1);
var outputFileName = "Scene" + LeadingChars(ScenesCount + 1,"0") + newExtension;
var outputPath3 = Path.Combine(outputPath, outputFileName);
DoRender(outputPath3, renderer, renderTemplate);
for (var q = 3 ; q > 0 ; q--){
Vegas.Project.Tracks.Remove(Vegas.Project.Tracks[q - 1]);
}
}
} catch (e) {
MessageBox.Show(e);
}