public void FromVegas(Vegas vegas) { string rendererName = Script.Args.ValueOf("renderer"); string templateName = Script.Args.ValueOf("template"); Renderer renderer = vegas.Renderers.FindByName(rendererName); RenderTemplate template = null; if (renderer != null) { template = renderer.Templates.FindByName(templateName); } if (template == null) { vegas.ShowError("Render template not found."); return; } string path = vegas.Project.FilePath; string saveas = Path.GetDirectoryName(path) + "\\" + Path.GetFileNameWithoutExtension(path) + ".rendered.mp4"; RenderStatus status = vegas.Render(saveas, template); if (status == RenderStatus.Complete || status == RenderStatus.Canceled || status == RenderStatus.Quit) { vegas.Exit(); } else { vegas.ShowError("Render incomplete. Please try again."); return; } }
public int ProcessFolder(DirectoryInfo diStart, DirectoryInfo diMedia, string subMedia, string subRender, RenderTemplate renderTemplate, RenderStatusManager rsm) { int rendered = 0; if (rsm.Cancel) { return(rendered); } System.Diagnostics.Debug.WriteLine("Checking {0}", diStart.FullName); // Process for files foreach (FileInfo fi in diStart.GetFiles("*-1st.veg")) { if (rsm.Cancel) { return(rendered); } if (ProcessFile(fi, diMedia, subMedia, subRender, renderTemplate, rsm)) { rendered++; } } foreach (FileInfo fi in diStart.GetFiles("*.veg")) { if (rsm.Cancel) { return(rendered); } // Make sure we didn't process this as a 1st file and it's not set to do not render if (fi.FullName.ToLower().IndexOf("-1st.veg") == -1 && fi.FullName.ToLower().IndexOf("-dnr.veg") == -1) { if (ProcessFile(fi, diMedia, subMedia, subRender, renderTemplate, rsm)) { rendered++; } } } // Process subdirectories foreach (DirectoryInfo subDi in diStart.GetDirectories()) { rendered += ProcessFolder(subDi, diMedia, subMedia, subRender, renderTemplate, rsm); } return(rendered); }
public bool RenderFile(FileInfo fiVeg, FileInfo fiRendered, RenderTemplate renderTemplate, RenderStatusManager rsm, object dr) { DateTime renderStart = DateTime.Now; DateTime renderEnd; TimeSpan renderTime; rsm.Dialog.Hide(); // Temporarily hide because during load the UX kills it. rsm.UpdateField(dr, RenderStatusManager.Fields.Names.RenderStart, renderStart); if (myVegas.Project != null) { // No close method so create a clean new project without the ability to prompt for save of existing // and then open after that. myVegas.NewProject(false, false); } myVegas.UpdateUI(); rsm.UpdateField(dr, RenderStatusManager.Fields.Names.RenderStatus, "Loading"); myVegas.OpenFile(fiVeg.FullName); myVegas.UpdateUI(); myVegas.WaitForIdle(); rsm.Dialog.Show(); // Render RenderArgs ra = new RenderArgs(); ra.OutputFile = fiRendered.FullName; ra.RenderTemplate = renderTemplate; Timecode projectLength = GetProjectLength(); rsm.UpdateField(dr, RenderStatusManager.Fields.Names.ProjectLength, projectLength); ra.Length = projectLength; ra.StartNanos = 0; rsm.UpdateField(dr, RenderStatusManager.Fields.Names.RenderStatus, "Rendering"); RenderStatus status = myVegas.Render(ra); renderEnd = DateTime.Now; renderTime = renderEnd - renderStart; rsm.UpdateField(dr, RenderStatusManager.Fields.Names.RenderEnd, renderEnd); rsm.UpdateField(dr, RenderStatusManager.Fields.Names.RenderTime, renderTime); rsm.UpdateField(dr, RenderStatusManager.Fields.Names.RenderStatus, status.ToString()); return(status == RenderStatus.Complete); }
public bool ProcessFile(FileInfo fiVeg, DirectoryInfo diMedia, string subMedia, string subRender, RenderTemplate renderTemplate, RenderStatusManager rsm) { object dr = rsm.StartProjectProcessing(fiVeg); DateTime lastMedia = UpdateMediaFiles(diMedia, fiVeg.Directory, subMedia, rsm, dr); FileInfo renderedFile = GetRenderedFile(fiVeg, subRender); if ((!renderedFile.Exists || renderedFile.LastWriteTimeUtc < fiVeg.LastWriteTimeUtc || renderedFile.LastWriteTimeUtc < lastMedia || renderedFile.Length == 0) && renderedFile.Directory.Exists) { return(RenderFile(fiVeg, renderedFile, renderTemplate, rsm, dr)); } else { rsm.UpdateField(dr, RenderStatusManager.Fields.Names.RenderStatus, "Skipped"); } return(false); }
public RenderItem(Renderer r, RenderTemplate t, String e) { this.Renderer = r; this.Template = t; // need to strip off the extension's leading "*" if (null != e) this.Extension = e.TrimStart('*'); }
private static bool IsTemplateValid(int projectAudioChannelCount, bool projectHasVideo, bool projectHasAudio, RenderTemplate template) { // filter out invalid templates if (!template.IsValid()) { return false; } // filter out video templates when project has // no video. if (!projectHasVideo && (0 < template.VideoStreamCount)) { return false; } // filter out audio-only templates when project has no audio if (!projectHasAudio && (0 == template.VideoStreamCount) && (0 < template.AudioStreamCount)) { return false; } // filter out templates that have more channels than the project if (projectAudioChannelCount < template.AudioChannelCount) { return false; } // filter out templates that don't have // exactly one file extension String[] extensions = template.FileExtensions; if (1 != extensions.Length) { return false; } return true; }
DialogResult DoDialog() { Form form = new Form(); form.SuspendLayout(); form.AutoScaleMode = AutoScaleMode.Font; form.AutoScaleDimensions = new SizeF(6F, 13F); form.FormBorderStyle = FormBorderStyle.FixedDialog; form.StartPosition = FormStartPosition.CenterParent; form.MaximizeBox = false; form.MinimizeBox = false; form.HelpButton = false; form.ShowInTaskbar = false; form.Text = "Render Audio Tracks"; form.AutoSize = true; form.AutoSizeMode = AutoSizeMode.GrowAndShrink; TableLayoutPanel layout = new TableLayoutPanel(); layout.AutoSize = true; layout.AutoSizeMode = AutoSizeMode.GrowAndShrink; layout.GrowStyle = TableLayoutPanelGrowStyle.AddRows; layout.ColumnCount = 3; layout.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 140)); layout.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 180)); layout.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 80)); form.Controls.Add(layout); Label label; label = new Label(); label.Text = "Output Folder:"; label.AutoSize = false; label.TextAlign = ContentAlignment.MiddleLeft; label.Margin = new Padding(8, 8, 8, 4); label.Anchor = AnchorStyles.Left | AnchorStyles.Right; layout.Controls.Add(label); layout.SetColumnSpan(label, 3); if (!String.IsNullOrEmpty(myVegas.Project.FilePath)) { OutputDirBox.Text = Path.GetDirectoryName(myVegas.Project.FilePath); } else { OutputDirBox.Text = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); } OutputDirBox.Anchor = AnchorStyles.Left | AnchorStyles.Right; OutputDirBox.Margin = new Padding(16, 8, 8, 4); layout.Controls.Add(OutputDirBox); layout.SetColumnSpan(OutputDirBox, 2); BrowseButton.FlatStyle = FlatStyle.System; BrowseButton.Text = "Browse"; BrowseButton.AutoSize = true; layout.Controls.Add(BrowseButton); label = new Label(); label.Text = "Save as type:"; label.AutoSize = false; label.TextAlign = ContentAlignment.MiddleLeft; label.Margin = new Padding(8, 8, 8, 4); label.Anchor = AnchorStyles.Left | AnchorStyles.Right; layout.Controls.Add(label); RendererCombo.Anchor = AnchorStyles.Left | AnchorStyles.Right; layout.Controls.Add(RendererCombo); layout.SetColumnSpan(RendererCombo, 2); label = new Label(); label.Text = "Template:"; label.AutoSize = false; label.TextAlign = ContentAlignment.MiddleLeft; label.Margin = new Padding(8, 8, 8, 4); label.Anchor = AnchorStyles.Left | AnchorStyles.Right; layout.Controls.Add(label); TemplateCombo.Anchor = AnchorStyles.Left | AnchorStyles.Right; layout.Controls.Add(TemplateCombo); layout.SetColumnSpan(TemplateCombo, 2); UseSelectionBox.Text = "Render loop region only"; UseSelectionBox.Checked = CanUseSelection && UseSelection; UseSelectionBox.Enabled = CanUseSelection; UseSelectionBox.AutoSize = false; UseSelectionBox.FlatStyle = FlatStyle.System; UseSelectionBox.Margin = new Padding(16, 8, 8, 4); UseSelectionBox.Anchor = AnchorStyles.Left | AnchorStyles.Right; layout.Controls.Add(UseSelectionBox); layout.SetColumnSpan(UseSelectionBox, 3); FlowLayoutPanel buttonPanel = new FlowLayoutPanel(); buttonPanel.FlowDirection = FlowDirection.RightToLeft; buttonPanel.Size = Size.Empty; buttonPanel.AutoSize = true; buttonPanel.AutoSizeMode = AutoSizeMode.GrowAndShrink; buttonPanel.Margin = new Padding(8, 8, 8, 8); buttonPanel.Anchor = AnchorStyles.Top | AnchorStyles.Right; layout.Controls.Add(buttonPanel); layout.SetColumnSpan(buttonPanel, 3); Button cancelButton = new Button(); cancelButton.Text = "Cancel"; cancelButton.FlatStyle = FlatStyle.System; cancelButton.DialogResult = DialogResult.Cancel; buttonPanel.Controls.Add(cancelButton); form.CancelButton = cancelButton; okButton.Text = "OK"; okButton.FlatStyle = FlatStyle.System; okButton.DialogResult = DialogResult.OK; buttonPanel.Controls.Add(okButton); form.AcceptButton = okButton; BrowseButton.Click += HandleBrowseOutputDir; FillRenderers(RendererCombo); RendererCombo.SelectedValueChanged += HandleRendererChanged; if (0 < RendererCombo.Items.Count) { RendererCombo.SelectedIndex = 0; } form.ResumeLayout(); DialogResult result = form.ShowDialog(myVegas.MainWindow); if (DialogResult.OK == result) { OutputDir = OutputDirBox.Text; SelectedTemplate = TemplateCombo.SelectedItem as RenderTemplate; if (CanUseSelection) { UseSelection = UseSelectionBox.Checked; } } return(result); }
private void RenderAllStale(object sender, EventArgs e) { try { // Set Defaults startDirectory = "V:\\AIIM\\Change"; mediaDirectory = startDirectory; mediaSubDirectory = "Media"; renderSubDirectory = "Render"; renderTemplate = "1920x1080-30fps-6/1.5mbps"; RenderStaleConfiguration rsc = new RenderStaleConfiguration(); rsc.LoadScreen(startDirectory, mediaDirectory, mediaSubDirectory, renderSubDirectory, renderTemplate); rsc.ShowDialog(); if (!rsc.Valid) { return; } rsc.GetValues(out startDirectory, out mediaDirectory, out mediaSubDirectory, out renderSubDirectory, out renderTemplate); // Find Render Template RenderTemplate rt = null; foreach (Renderer renderer in myVegas.Renderers) { foreach (RenderTemplate temp in renderer.Templates) { if (temp.Name == renderTemplate) { rt = temp; break; } } if (rt != null) { break; } } // Setup UX RenderStatusManager rsm = new RenderStatusManager(); RenderStaleStatus rss = new RenderStaleStatus(); rss.SetRenderStatusManager(rsm); rsm.Dialog = rss; rss.Show(); // Process DirectoryInfo fiStart = new DirectoryInfo(startDirectory); DirectoryInfo fiMedia = new DirectoryInfo(mediaDirectory); if (fiStart.Exists && fiMedia.Exists && rt != null) { ProcessFolder(fiStart, fiMedia, mediaSubDirectory, renderSubDirectory, rt, rsm); } rss.Close(); SaveFileDialog sfd = new SaveFileDialog(); sfd.FileOk += Sfd_FileOk; sfd.ShowDialog(); if (saveOk) { File.WriteAllText(sfd.FileName, rsm.GetTableAsCSV()); } } catch (Exception ex) { MessageBox.Show(ex.ToString(), "Exception", MessageBoxButtons.OK); } }
public void FromVegas(Vegas vegas) { if (vegas.Project.Length.ToMilliseconds() == 0) { return; } SetDllDirectory(VegasDir + "\\Script Depends"); string RegKey = "HKEY_CURRENT_USER\\Software\\Sony Creative Software\\Vegas Pro\\frameserver"; int AddBuffer = 1; int RenderLoop = 1; string outputDirectory = ""; try { AddBuffer = (int)Registry.GetValue(RegKey, "AddBuffer", 1); RenderLoop = (int)Registry.GetValue(RegKey, "RenderLoopRegion", 1); outputDirectory = (string)Registry.GetValue(RegKey, "TempDir", ""); } catch {} string outDirDefualt = Environment.GetEnvironmentVariable("TEMP") + "\\frameserver"; if (outputDirectory == "") { outputDirectory = outDirDefualt; } if (!Directory.Exists(outputDirectory)) { try { Directory.CreateDirectory(outputDirectory); } catch { outputDirectory = outDirDefualt; Directory.CreateDirectory(outputDirectory); } } // Start virtual file system, AviSynth and HandBrake ahktextdll(Unzip(Convert.FromBase64String(StartScriptData)), "", ""); while (!ahkReady()) { Thread.Sleep(100); } ahkassign("TempFileDir", outputDirectory); ahkassign("AddBuffer", AddBuffer.ToString()); ahkassign("RegKey", RegKey); ahkassign("VegasDir", VegasDir); ahkPause("Off"); Regex videoRendererRegexp = new Regex(@"DebugMode FrameServer", RegexOptions.Compiled | RegexOptions.IgnoreCase); Regex videoTemplateRegexp = new Regex(@"Project Default", RegexOptions.Compiled | RegexOptions.IgnoreCase); try { //Add an empty event to first video track to solve frameserver audio bug if (AddBuffer > 0) { foreach (Track CurTrack in vegas.Project.Tracks) { if (CurTrack.IsVideo()) { TargetTrack = CurTrack; emptyEvent = new VideoEvent(vegas.Project, vegas.Project.Length, Timecode.FromMilliseconds(1000), null); CurTrack.Events.Add(emptyEvent); break; } } } // Check timeline's loop-region Timecode renderStart = new Timecode(); Timecode renderLength = vegas.Project.Length; if (RenderLoop > 0) { renderStart = vegas.SelectionStart; if (AddBuffer > 0) { renderLength = vegas.SelectionLength + Timecode.FromMilliseconds(1000); } else { renderLength = vegas.SelectionLength; } } //Define export path and file name string projDir, projName, videoOutputFile; string projFile = vegas.Project.FilePath; if ((null == projFile) || (0 == projFile.Length)) { projDir = ""; projName = "Untitled"; } else { projDir = Path.GetDirectoryName(projFile) + Path.DirectorySeparatorChar; projName = Path.GetFileNameWithoutExtension(projFile); } videoOutputFile = outputDirectory + "\\" + OutFileName + ".avi"; if (null == videoOutputFile) { throw new Exception("Process terminated"); } Renderer aviRenderer = FindRenderer(videoRendererRegexp, vegas); if (null == aviRenderer) { throw new Exception("Could not find DebugMode FrameServer"); } // Start export RenderTemplate videoTemplate = FindRenderTemplate(aviRenderer, videoTemplateRegexp, vegas); if (null == videoTemplate) { throw new Exception("Could not find the render preset defined by the script"); } RenderStatus renderStatus = vegas.Render(videoOutputFile, videoTemplate, renderStart, renderLength); if (AddBuffer > 0) { TargetTrack.Events.Remove(emptyEvent); } } catch (Exception ex) { if (AddBuffer > 0) { TargetTrack.Events.Remove(emptyEvent); } MessageBox.Show(ex.ToString()); } }