SeekTimecode Method

Summary
Seeks the specified time code.
Syntax
C#
C++/CLI
public void SeekTimecode( 
   int Timecode 
) 
public: 
void SeekTimecode(  
   int Timecode 
)  

Parameters

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.

Remarks

Seeks the specified time code. If the method fails, an error is raised. For more information, refer to the Error Codes.

Example
C#
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"; 
} 
Requirements

Target Platforms

Help Version 23.0.2024.2.29
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2024 LEAD Technologies, Inc. All Rights Reserved.

Leadtools.Multimedia Assembly
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2023 LEAD Technologies, Inc. All Rights Reserved.