public void StepForward()
public:
void StepForward();
This method sets the Mode property to VCRControlMode.StepForward. This method does not support the VCRControlDeviceType.Camera device type. If the method fails, an error is raised. For more information, refer to the Error Codes.
using Leadtools;
using Leadtools.Multimedia;
using LeadtoolsMultimediaExamples.Fixtures;
public bool _result = false;
public ConvertCtrlForm _form = new ConvertCtrlForm();
public ConvertCtrl _convertctrl;
public bool _testing;
public int _startTimeCode;
public int _stopTimeCode;
public void ReadTimecodeExample()
{
// reference the convert control
_convertctrl = _form.ConvertCtrl;
// input file
string inFile = Path.Combine(LEAD_VARS.MediaDir, "ConvertCtrl_Source.avi");
try
{
// check to see if we have the desired target device
if (_convertctrl.TargetDevices["Microsoft DV Camera and VCR"] == null)
throw new Exception("No Microsoft DV Camera target devices available!");
// set the video capture device, use your capture device name here
_convertctrl.SourceFile = inFile;
// select video and audio compressors to none
_convertctrl.VideoCompressors.Selection = -1;
_convertctrl.AudioCompressors.Selection = -1;
// select the target format
_convertctrl.TargetFormats[TargetFormatType.DVSD].Selected = true;
// select only Audio for this example
_convertctrl.AllowedStreams = StreamFormatType.AudioVideo;
// set a target device
_convertctrl.TargetDevices["Microsoft DV Camera and VCR"].Selected = true;
// check the target device VCRControl
if (_convertctrl.TargetVCRControl == null
|| (_convertctrl.TargetVCRControl.DeviceType == VCRControlDeviceType.NotPresent
|| _convertctrl.TargetVCRControl.DeviceType == VCRControlDeviceType.Unknown))
throw new Exception("MS DV Camera's Target VCR control is not present!");
// subscribe to convert control events for VCR control input
_convertctrl.Started += new EventHandler(ConvertCtrl_Started);
_convertctrl.Complete += new EventHandler(ConvertCtrl_Complete);
_convertctrl.Progress += new ProgressEventHandler(ConvertCtrl_Progress);
_convertctrl.KeyPress += new Leadtools.Multimedia.KeyPressEventHandler(ConvertCtrl_KeyPress);
// start the conversion
_convertctrl.StartConvert();
}
catch (Exception)
{
_result = false;
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 (_convertctrl.State == ConvertState.Running)
Application.DoEvents();
// switch to playback and test
_testing = true;
// again, we'll loop and pump messages for this example for
// playback testing, (setting _testing == true will exit)
while (_testing)
Application.DoEvents();
}
void ConvertCtrl_Started(object sender, EventArgs e)
{
// start recording
if (_convertctrl.TargetVCRControl.Mode != VCRControlMode.Record)
{
// pause the graph to prevent frame loss
_convertctrl.PauseConvert();
// start the record on the VCR control
_convertctrl.TargetVCRControl.Record();
// resume graph now
_convertctrl.RunConvert();
}
// get our VCR start timecode
_startTimeCode = _convertctrl.TargetVCRControl.ReadTimecode();
}
void ConvertCtrl_Complete(object sender, EventArgs e)
{
// stop recording
if (_convertctrl.TargetVCRControl.Mode != VCRControlMode.Stop)
_convertctrl.TargetVCRControl.Stop();
// get our VCR start timecode
_stopTimeCode = _convertctrl.TargetVCRControl.ReadTimecode();
// set the result to what we expect
_result = (_stopTimeCode > _startTimeCode);
}
void ConvertCtrl_KeyPress(object sender, Leadtools.Multimedia.KeyPressEventArgs e)
{
// if ok to perform playback functions
if (_testing && _convertctrl.TargetVCRControl != null)
{
// reference the target VCR control
VCRControl vcr = _convertctrl.TargetVCRControl;
switch ((char)e.keyAscii)
{
case '*':
// seek to the beginning of the capture
if (vcr.Mode != VCRControlMode.Stop)
vcr.Stop();
vcr.SeekTimecode(_startTimeCode);
break;
case '~':
// seek to the end of the capture
if (vcr.Mode != VCRControlMode.Stop)
vcr.Stop();
vcr.SeekTimecode(_stopTimeCode);
break;
case 'p':
// start playback
if (vcr.Mode != VCRControlMode.Play)
vcr.Play();
break;
case 's':
// skip ahead 1000 units from the current timecode
vcr.Pause();
int tc = vcr.ReadTimecode();
vcr.SeekTimecode(tc + 1000);
vcr.Play();
break;
case '+':
// step forward one frame
if (vcr.Mode != VCRControlMode.Pause)
vcr.Pause();
vcr.StepForward();
break;
case '-':
// step backward one frame
if (vcr.Mode != VCRControlMode.Pause)
vcr.Pause();
vcr.StepBackward();
break;
case 'f':
// slowest forward
vcr.SlowestForward();
break;
case 'r':
// slowest reverse
vcr.SlowestReverse();
break;
case '>':
// fastest forward
vcr.FastestForward();
break;
case '<':
// fastest reverse
vcr.FastestReverse();
break;
case 'x':
// stop playback and exit
if (vcr.Mode != VCRControlMode.Stop)
vcr.Stop();
_testing = false;
break;
}
}
}
void ConvertCtrl_Progress(object sender, ProgressEventArgs e)
{
if (_convertctrl.TargetVCRControl != null)
{
// reference the VCR control
VCRControl vcr = _convertctrl.TargetVCRControl;
// get the current time code
int timeCode = vcr.ReadTimecode();
}
}
static class LEAD_VARS
{
public const string MediaDir = @"C:\LEADTOOLS22\Media";
}
Help Collections
Raster .NET | C API | C++ Class Library | HTML5 JavaScript
Document .NET | C API | C++ Class Library | HTML5 JavaScript
Medical .NET | C API | C++ Class Library | HTML5 JavaScript
Medical Web Viewer .NET
Multimedia
Direct Show .NET | C API | Filters
Media Foundation .NET | C API | Transforms
Supported Platforms
.NET, Java, Android, and iOS/macOS Assemblies
Imaging, Medical, and Document
C API/C++ Class Libraries
Imaging, Medical, and Document
HTML5 JavaScript Libraries
Imaging, Medical, and Document