public void SeekTimecode(
int Timecode
)
public:
void SeekTimecode(
int Timecode
)
Timecode
Timecode to seek. The Timecode is in the following format: Hours, minutes, seconds, and frames, as a binary coded decimal (BCD) value: Hhhmmssff. The SMPTE timecode, more properly known as the SMPTE time and control code, is a series of digital frame address values, flags and additional data applied to a video or audio stream.
Seeks the specified time code. 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:\LEADTOOLS23\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