Leadtools.Multimedia Namespace > VCRControl Class : SeekTimecode Method |
'Usage Dim instance As VCRControl Dim Timecode As Integer instance.SeekTimecode(Timecode)
function Leadtools.Multimedia.VCRControl.SeekTimecode( Timecode )
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 175\Media"; End Class
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 175\Media"; }
Target Platforms: Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2