Plamen Petrov
April 1st, 2007, 04:08 PM
Hi there,
I am looking for a script to change the field order of all footages on the timeline (footage - properties - field order), i.e. from lower to progressive.
Edward Troxel
April 1st, 2007, 09:58 PM
Try this one. Save the following as ChangeFieldOrder.cs
/**
* This script will set the field order
*
* Written By: Edward Troxel
* Modified: 04-01-2007
**/
using System;
using System.IO;
using System.Text;
using System.Drawing;
using System.Reflection;
using System.Diagnostics;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using Sony.Vegas;
public class EntryPoint
{
Vegas myVegas;
public void FromVegas(Vegas vegas)
{
myVegas = vegas;
foreach (Track track in myVegas.Project.Tracks)
{
foreach(TrackEvent evnt in track.Events)
{
VideoFieldOrder FType = VideoFieldOrder.ProgressiveScan;
//VideoFieldOrder.LowerFieldFirst;
// VideoFieldOrder.UpperFieldFirst;
// VideoFieldOrder.ProgressiveScan;
// VideoFieldOrder.Unknown;
MediaStream mediaStream = GetActiveMediaStream (evnt, myVegas);
VideoStream videoStream = mediaStream as VideoStream;
videoStream.FieldOrder = FType;
}
}
}
public MediaStream GetActiveMediaStream (TrackEvent trackEvent, Vegas vegas)
{
try
{
if (!(trackEvent.ActiveTake.IsValid()))
{
throw new ArgumentException("empty or invalid take");
}
Media media = vegas.Project.MediaPool.Find(trackEvent.ActiveTake.MediaPath);
if (null == media)
{
MessageBox.Show("missing media");
throw new ArgumentException("missing media");
}
MediaStream mediaStream = media.Streams.GetItemByMediaType(MediaType.Video,
trackEvent.ActiveTake.StreamIndex);
return mediaStream;
}
catch (Exception e)
{
MessageBox.Show("{0}", e.Message);
return null;
}
}
}
Excalibur will also easily do this particular task if you don't want to mess with the above.