WMScripter Property (original) (raw)

Summary

Provides a way to get the WMScript object.

Syntax

Property Value

A WMScript object, which can be used to manage the Windows Media Script commands.

Example

using Leadtools; using Leadtools.Multimedia; using LeadtoolsMultimediaExamples.Fixtures; public bool _result = false; public CaptureCtrlForm _form = new CaptureCtrlForm(); public DateTime _startTime; CaptureCtrl _capturectrl; WMScript _mux; public void WriteScriptStreamExample() { _capturectrl = _form.CaptureCtrl; // reference the capture control string outFile = Path.Combine(LEAD_VARS.MediaDir, "WriteScriptStream_Dest.wmv"); try { _capturectrl.TargetFormat = TargetFormatType.WMVMux; _capturectrl.TargetFile = outFile; // set an audio device, use the name of your device here if (_capturectrl.VideoDevices["USB"] == null) throw new Exception("No USB audio device available"); _capturectrl.VideoDevices["USB"].Selected = true; if (_capturectrl.IsModeAvailable(CaptureMode.Video)) { _capturectrl.FrameDelay = .033; // 30 frames per second _capturectrl.TimeLimit = 10; // just 10 seconds of capture time _capturectrl.UseTimeLimit = true; // call ReadyCapture, so the target object is added _capturectrl.ReadyCapture(CaptureMode.Video | CaptureMode.InhibitRun); // get the scripter object _mux = _capturectrl.WMScripter; if (_mux == null) return; // enable the script stream _mux.EnableScriptStream = true; // subscribe to the complete event _capturectrl.Complete += new EventHandler(CaptureCtrl_Complete); // subscribe to the error abort event _capturectrl.ErrorAbort += new ErrorAbortEventHandler(CaptureCtrl_ErrorAbort); // set the start time _startTime = DateTime.Now; // set a timer so we can write the Script commands every second _form.TestTimer.Interval = 1000; _form.TestTimer.Tick += new EventHandler(TestTimer_Tick); _form.TestTimer.Start(); // start the capture process _capturectrl.StartCapture(CaptureMode.Video); // we'll loop on the state and pump messages for this example. // but you should not need to if running from a Windows Forms application. while (_capturectrl.State == CaptureState.Running) Application.DoEvents(); } } catch (Exception) { return; } // we'll loop on the state and pump messages for this example. // but you should not need to if running from a Windows Forms application. while (_capturectrl.State == CaptureState.Running) Application.DoEvents(); _result = true; } public void TestTimer_Tick(object sender, EventArgs e) { // stop the capture try { double elapsedTime = (DateTime.Now - _startTime).TotalMilliseconds / 1000; String sz = String.Format("Sample caption script at {0} seconds", elapsedTime); _mux.WriteScriptStream("caption", sz, elapsedTime); } catch (Exception) { _result = false; _capturectrl.StopCapture(); } } public void CaptureCtrl_Complete(object sender, EventArgs e) { // set result _result = true; // the capture has finished, do not write scripts anymore // Note that since the capture has finished automatically, I do not need to call _mux.CloseScriptStream() _form.TestTimer.Stop(); } public void CaptureCtrl_ErrorAbort(object sender, ErrorAbortEventArgs e) { // set result _result = false; // the capture has finished, do not write scripts anymore // Note that since the capture has finished automatically, I do not need to call _mux.CloseScriptStream() _form.TestTimer.Stop(); } static class LEAD_VARS { public const string MediaDir = @"C:\LEADTOOLS23\Media"; }