LEADTOOLS Multimedia (Leadtools.Multimedia assembly)

SeekTimecode Method

Show in webframe
Example 



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.
Syntax
'Declaration
 
Public Sub SeekTimecode( _
   ByVal Timecode As Integer _
) 
'Usage
 
Dim instance As VCRControl
Dim Timecode As Integer
 
instance.SeekTimecode(Timecode)
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
Copy Code  
Imports Leadtools
Imports Leadtools.Multimedia
Imports LeadtoolsMultimediaExamples.Fixtures

Public _result As Boolean = False
Public _form As ConvertCtrlForm = New ConvertCtrlForm()
Public _convertctrl As ConvertCtrl
Public _testing As Boolean
Public _startTimeCode As Integer
Public _stopTimeCode As Integer
Public Sub ReadTimecodeExample()
  ' reference the convert control
  _convertctrl = _form.ConvertCtrl

  ' input file
            Dim inFile As String = 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") Is Nothing Then
       Throw New Exception("No Microsoft DV Camera target devices available!")
     End If

     ' set the video capture device, use your capture device name here
     _convertctrl.SourceFile = inFile

     ' select video and audio compressors to none
     _convertctrl.VideoCompressors.Uncompressed.Selected = True
     _convertctrl.AudioCompressors.Uncompressed.Selected = True

     ' 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 Is Nothing OrElse (_convertctrl.TargetVCRControl.DeviceType = VCRControlDeviceType.NotPresent _
                                                                 OrElse _convertctrl.TargetVCRControl.DeviceType = VCRControlDeviceType.Unknown) Then
                 Throw New Exception("MS DV Camera's Target VCR control is not present!")
             End If

     ' subscribe to convert control events for VCR control input
     AddHandler _convertctrl.Started, AddressOf ConvertCtrl_Started
     AddHandler _convertctrl.Complete, AddressOf ConvertCtrl_Complete
     AddHandler _convertctrl.Progress, AddressOf ConvertCtrl_Progress
     AddHandler _convertctrl.KeyPress, AddressOf ConvertCtrl_KeyPress

        ' start the conversion
     _convertctrl.StartConvert()
  Catch e1 As Exception
     _result = False
  End Try

  ' 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.
  Do While _convertctrl.State = ConvertState.Running
     Application.DoEvents()
  Loop

  ' 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)
  Do While _testing
     Application.DoEvents()
  Loop
End Sub

Private Sub ConvertCtrl_Started(ByVal sender As Object, ByVal e As EventArgs)
  ' start recording
  If _convertctrl.TargetVCRControl.Mode <> VCRControlMode.Record Then
     ' pause the graph to prevent frame loss
     _convertctrl.PauseConvert()
     ' start the record on the VCR control
     _convertctrl.TargetVCRControl.Record()
     ' resume graph now
     _convertctrl.RunConvert()
  End If

  ' get our VCR start timecode
  _startTimeCode = _convertctrl.TargetVCRControl.ReadTimecode()
End Sub

Private Sub ConvertCtrl_Complete(ByVal sender As Object, ByVal e As EventArgs)
  ' stop recording
  If _convertctrl.TargetVCRControl.Mode <> VCRControlMode.Stop Then
     _convertctrl.TargetVCRControl.Stop()
  End If

  ' get our VCR start timecode
  _stopTimeCode = _convertctrl.TargetVCRControl.ReadTimecode()

  ' set the result to what we expect
  _result = (_stopTimeCode > _startTimeCode)
End Sub

Private Sub ConvertCtrl_KeyPress(ByVal sender As Object, ByVal e As Leadtools.Multimedia.KeyPressEventArgs)
  ' if ok to perform playback functions 
  If _testing AndAlso Not _convertctrl.TargetVCRControl Is Nothing Then
     ' reference the target VCR control
     Dim vcr As VCRControl = _convertctrl.TargetVCRControl
        Select Case e.keyAscii
           Case CShort("*")
              ' seek to the beginning of the capture 
              If vcr.Mode <> VCRControlMode.Stop Then
                 vcr.Stop()
              End If
              vcr.SeekTimecode(_startTimeCode)
           Case CShort("~")
              ' seek to the end of the capture
              If vcr.Mode <> VCRControlMode.Stop Then
                 vcr.Stop()
              End If
              vcr.SeekTimecode(_stopTimeCode)
           Case CShort("p")
              ' start playback
              If vcr.Mode <> VCRControlMode.Play Then
                 vcr.Play()
              End If
           Case CShort("s")
              ' skip ahead 1000 units from the current timecode 
              vcr.Pause()
              Dim tc As Integer = vcr.ReadTimecode()
              vcr.SeekTimecode(tc + 1000)
              vcr.Play()
           Case CShort("+")
              ' step forward one frame
              If vcr.Mode <> VCRControlMode.Pause Then
                 vcr.Pause()
              End If
              vcr.StepForward()
           Case CShort("-")
              ' step backward one frame
              If vcr.Mode <> VCRControlMode.Pause Then
                 vcr.Pause()
              End If
              vcr.StepBackward()
           Case CShort("f")
              ' slowest forward
              vcr.SlowestForward()
           Case CShort("r")
              ' slowest reverse
              vcr.SlowestReverse()
           Case CShort(">")
              ' fastest forward
              vcr.FastestForward()
           Case CShort("<")
              ' fastest reverse
              vcr.FastestReverse()
           Case CShort("x")
              ' stop playback and exit
              If vcr.Mode <> VCRControlMode.Stop Then
                 vcr.Stop()
              End If
              _testing = False
        End Select
  End If
End Sub

Private Sub ConvertCtrl_Progress(ByVal sender As Object, ByVal e As ProgressEventArgs)
  If Not _convertctrl.TargetVCRControl Is Nothing Then
     ' reference the VCR control
     Dim vcr As VCRControl = _convertctrl.TargetVCRControl

     ' get the current time code
     Dim timeCode As Integer = vcr.ReadTimecode()
  End If
End Sub

Public NotInheritable Class LEAD_VARS
Public Const MediaDir As String = "C:\Program Files (x86)\LEAD Technologies\LEADTOOLS 18\Media"
End Class
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.Uncompressed.Selected = true;
      _convertctrl.AudioCompressors.Uncompressed.Selected = true;

      // 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;
   }

   // 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:\Program Files (x86)\LEAD Technologies\LEADTOOLS 18\Media";
}
Requirements

Target Platforms

See Also

Reference

VCRControl Class
VCRControl Members

 

 


Products | Support | Contact Us | Copyright Notices
© 2006-2014 All Rights Reserved. LEAD Technologies, Inc.

Leadtools.Multimedia requires a Multimedia or Multimedia Suite license and unlock key. For more information, refer to: LEADTOOLS Toolkit Features