Products | Support | Email a link to this topic. | Send comments on this topic. | Back to Introduction | Help Version 19.0.2.9
|
Leadtools.Multimedia Namespace > PlayCtrl Class : SourceFile Property |
public virtual string SourceFile {get; set;}
'Declaration
Public Overridable Property SourceFile As String
'Usage
Dim instance As PlayCtrl Dim value As String instance.SourceFile = value value = instance.SourceFile
When you set the source to a URL, setting the property will block waiting until data arrives or the filter's timeout is exceeded. The timeouts can be large (15+ seconds), so setting the source in the main user interface thread might block the app for many seconds. If no data is received, some filters (LEAD MPEG-2 Transport UDP Source and LEAD RTSP Source), will cause a MediaEvent event to be fired every second. The event will have eventCode set to MediaEventCode.EC_LOADSTATUS and param1 will be set to LoadStatusEventCode.AM_LOADSTATUS_WAITING_FOR_DATA. See the MediaEventCode enumeration for more details. You can abort the wait for data by calling ResetSource while processing the event. See LoadStatusEventCode for more details.
For more information, refer to the Error Codes.
Imports Leadtools Imports Leadtools.Multimedia Imports LeadtoolsMultimediaExamples.Fixtures Public _result As Boolean = False Public _form As PlayCtrlForm = New PlayCtrlForm() Public _playctrl As PlayCtrl Public _seekingCaps As PlaySeeking Public _start As TimeSpan = TimeSpan.Zero Public Sub HasDialogExample() ' reference the play control _playctrl = _form.PlayCtrl ' input file for playback Dim inFile As String = Path.Combine(LEAD_VARS.MediaDir, "PlayCtrl_Source.avi") Try ' turn off autostart and auto rewind _playctrl.AutoStart = False _playctrl.AutoRewind = False ' set the source file _playctrl.SourceFile = inFile ' show some media info if available ShowMediaInfo() ' the HasDialog method tells us that the control ' can display the desired settings dialog. ' check to see if the video renderer properties dialog is available If _playctrl.HasDialog(PlayDlg.VideoRenderer) Then ' now show it to change some settings _playctrl.ShowDialog(PlayDlg.VideoRenderer, _form) _result = True End If ' get the source object type Dim sot As SourceObjectType = _playctrl.SourceType ' check some audio properties Dim mute As Boolean = _playctrl.Mute Dim bal As Integer = _playctrl.Balance Dim vol As Integer = _playctrl.Volume ' seeking caps - you can use these to enable menu states or toolbar buttons _seekingCaps = _playctrl.CheckSeekingCapabilities(PlaySeeking.Forward Or PlaySeeking.Backward) ' subscribe to the key press event to demo play functions AddHandler _playctrl.KeyPress, AddressOf PlayCtrl_KeyPress ' start the capture process _playctrl.Run() ' 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 _playctrl.State = PlayState.Running _ OrElse _playctrl.State = PlayState.Paused _ OrElse _playctrl.State = PlayState.NotReady Application.DoEvents() Loop ' call reset source here to release resources ' but not necessary if we are just exiting _playctrl.ResetSource() Catch e1 As Exception _result = False End Try End Sub ' state variables for helper timer states Public _markedSelStart As Boolean = False Public _markedSelEnd As Boolean = False Public _seekedSelStart As Boolean = False Public _seekedSelEnd As Boolean = False ' key press event handler to manage playback functions Private Sub PlayCtrl_KeyPress(ByVal sender As Object, ByVal e As Leadtools.Multimedia.KeyPressEventArgs) Dim key As Char = CChar(ChrW(e.keyAscii)) Select Case key Case "b"c If (Not _markedSelStart) Then _markedSelStart = True _playctrl.MarkSelectionStart() System.Diagnostics.Debug.WriteLine("Mark Selection Start: " & _playctrl.SelectionStart.ToString() & " secs") System.Diagnostics.Debug.WriteLine(" ... playctrl.State: " & _playctrl.State.ToString()) End If Case "e"c If (Not _markedSelEnd) Then _markedSelEnd = True _playctrl.Pause() _playctrl.MarkSelectionEnd() System.Diagnostics.Debug.WriteLine("Mark Selection End: " & _playctrl.SelectionEnd.ToString() & " secs") System.Diagnostics.Debug.WriteLine(" ... playctrl.State: " & _playctrl.State.ToString()) _playctrl.SeekSelectionStart() _playctrl.Run() End If Case "s"c If (Not _seekedSelStart) Then _seekedSelStart = True System.Diagnostics.Debug.WriteLine("Seek To Selection Start: " & _playctrl.SelectionStart.ToString() & " secs") System.Diagnostics.Debug.WriteLine(" ... playctrl.State: " & _playctrl.State.ToString()) _playctrl.SeekSelectionStart() End If Case "f"c ' toggle full screen _playctrl.ToggleFullScreenMode() Case "+"c If _playctrl.State = PlayState.Running Then _playctrl.Pause() End If _playctrl.NextFrame() Case "-"c If _playctrl.State = PlayState.Running Then _playctrl.Pause() End If _playctrl.PreviousFrame() Case "z"c If (Not _seekedSelEnd) Then ' turn off full screen mode _playctrl.FullScreenMode = False _seekedSelEnd = True System.Diagnostics.Debug.WriteLine("Seek To Selection End: " & _playctrl.SelectionEnd.ToString() & " secs") System.Diagnostics.Debug.WriteLine(" ... playctrl.State: " & _playctrl.State.ToString()) _playctrl.SeekSelectionEnd() End If Case "x"c _playctrl.Stop() End Select End Sub Private Sub ShowMediaInfo() Dim d As Double = 0 Dim sa, scr, sd, sr, st As String sa = "Unavailable" scr = "Unavailable" sd = "Unavailable" sr = "Unavailable" st = "Unavailable" Try d = _playctrl.FrameDuration sa = _playctrl.Author scr = _playctrl.Copyright sd = _playctrl.Description sr = _playctrl.Rating st = _playctrl.Title Catch e1 As Exception End Try MessageBox.Show(_form, String.Format("Duration: {0}" _ & Microsoft.VisualBasic.Constants.vbLf _ & "Author: {1}" _ & Microsoft.VisualBasic.Constants.vbLf _ & "Copyright: {2}" _ & Microsoft.VisualBasic.Constants.vbLf _ & "Desc: {3}" & Microsoft.VisualBasic.Constants.vbLf _ & "Rating: {4}" & Microsoft.VisualBasic.Constants.vbLf _ & "Title: {5}" _ & Microsoft.VisualBasic.Constants.vbLf, _ d, sa, scr, sd, sr, st), "Media Info") End Sub Private Sub SelectedOptions() _playctrl.SeekStart() _playctrl.SeekEnd() Dim te As Integer = _playctrl.TrackingSelectionEnd Dim ts As Integer = _playctrl.TrackingSelectionStart Dim se As Double = _playctrl.SelectionEnd Dim ss As Double = _playctrl.SelectionStart End Sub Public NotInheritable Class LEAD_VARS Public Const MediaDir As String = "C:\Program Files (x86)\LEAD Technologies\LEADTOOLS 19\Media" End Class
using Leadtools; using Leadtools.Multimedia; using LeadtoolsMultimediaExamples.Fixtures; public bool _result = false; public PlayCtrlForm _form = new PlayCtrlForm(); public PlayCtrl _playctrl; public PlaySeeking _seekingCaps; public TimeSpan _start = TimeSpan.Zero; public void HasDialogExample() { // reference the play control _playctrl = _form.PlayCtrl; // input file for playback string inFile =Path.Combine(LEAD_VARS.MediaDir,"PlayCtrl_Source.avi"); try { // turn off autostart and auto rewind _playctrl.AutoStart = false; _playctrl.AutoRewind = false; // set the source file _playctrl.SourceFile = inFile; // show some media info if available ShowMediaInfo(); // the HasDialog method tells us that the control // can display the desired settings dialog. // check to see if the video renderer properties dialog is available if (_playctrl.HasDialog(PlayDlg.VideoRenderer)) { // now show it to change some settings _playctrl.ShowDialog(PlayDlg.VideoRenderer, _form); _result = true; } // get the source object type SourceObjectType sot = _playctrl.SourceType; // check some audio properties bool mute = _playctrl.Mute; int bal = _playctrl.Balance; int vol = _playctrl.Volume; // seeking caps - you can use these to enable menu states or toolbar buttons _seekingCaps = _playctrl.CheckSeekingCapabilities(PlaySeeking.Forward | PlaySeeking.Backward); // subscribe to the key press event to demo play functions _playctrl.KeyPress += new Leadtools.Multimedia.KeyPressEventHandler(PlayCtrl_KeyPress); // start the capture process _playctrl.Run(); // 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 (_playctrl.State == PlayState.Running || _playctrl.State == PlayState.Paused || _playctrl.State == PlayState.NotReady) Application.DoEvents(); // call reset source here to release resources // but not necessary if we are just exiting _playctrl.ResetSource(); } catch (Exception) { _result = false; } } // state variables for helper timer states public bool _markedSelStart = false; public bool _markedSelEnd = false; public bool _seekedSelStart = false; public bool _seekedSelEnd = false; // key press event handler to manage playback functions void PlayCtrl_KeyPress(object sender, Leadtools.Multimedia.KeyPressEventArgs e) { char key = (char)e.keyAscii; switch (key) { case 'b': if (!_markedSelStart) { _markedSelStart = true; _playctrl.MarkSelectionStart(); System.Diagnostics.Debug.WriteLine("Mark Selection Start: " + _playctrl.SelectionStart.ToString() + " secs"); System.Diagnostics.Debug.WriteLine(" ... playctrl.State: " + _playctrl.State.ToString()); } break; case 'e': if (!_markedSelEnd) { _markedSelEnd = true; _playctrl.Pause(); _playctrl.MarkSelectionEnd(); System.Diagnostics.Debug.WriteLine("Mark Selection End: " + _playctrl.SelectionEnd.ToString() + " secs"); System.Diagnostics.Debug.WriteLine(" ... playctrl.State: " + _playctrl.State.ToString()); _playctrl.SeekSelectionStart(); _playctrl.Run(); } break; case 's': if (!_seekedSelStart) { _seekedSelStart = true; System.Diagnostics.Debug.WriteLine("Seek To Selection Start: " + _playctrl.SelectionStart.ToString() + " secs"); System.Diagnostics.Debug.WriteLine(" ... playctrl.State: " + _playctrl.State.ToString()); _playctrl.SeekSelectionStart(); } break; case 'f': // toggle full screen _playctrl.ToggleFullScreenMode(); break; case '+': if (_playctrl.State == PlayState.Running) _playctrl.Pause(); _playctrl.NextFrame(); break; case '-': if (_playctrl.State == PlayState.Running) _playctrl.Pause(); _playctrl.PreviousFrame(); break; case 'z': if (!_seekedSelEnd) { // turn off full screen mode _playctrl.FullScreenMode = false; _seekedSelEnd = true; System.Diagnostics.Debug.WriteLine("Seek To Selection End: " + _playctrl.SelectionEnd.ToString() + " secs"); System.Diagnostics.Debug.WriteLine(" ... playctrl.State: " + _playctrl.State.ToString()); _playctrl.SeekSelectionEnd(); } break; case 'x': _playctrl.Stop(); break; } } private void ShowMediaInfo() { double d = 0; string sa, scr, sd, sr, st; sa = scr = sd = sr = st = "Unavailable"; try { d = _playctrl.FrameDuration; sa = _playctrl.Author; scr = _playctrl.Copyright; sd = _playctrl.Description; sr = _playctrl.Rating; st = _playctrl.Title; } catch (Exception) { } MessageBox.Show(_form, string.Format("Duration: {0}\nAuthor: {1}\nCopyright: {2}\nDesc: {3}\nRating: {4}\nTitle: {5}\n", d, sa, scr, sd, sr, st), "Media Info"); } void SelectedOptions() { _playctrl.SeekStart(); _playctrl.SeekEnd(); int te = _playctrl.TrackingSelectionEnd; int ts = _playctrl.TrackingSelectionStart; double se = _playctrl.SelectionEnd; double ss = _playctrl.SelectionStart; } static class LEAD_VARS { public const string MediaDir = @"C:\Program Files (x86)\LEAD Technologies\LEADTOOLS 19\Media"; }